Skip to content

ajiyoshi-vg/stream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

stream

  • SICP 3章のストリームの一部をgoで実装したものです
    • goである必然性はありません
    • Lispが読めない人でも比較的読みやすいと思ったからというのが理由の一つです

見どころ

自然数全体を、定数ゼロとsuccのみで構成しているところとか

var Natural = IntegerStartingFrom(0)

func IntegerStartingFrom(n int) Stream[int] {
	return Cons(
		n,
		func() Stream[int] {
			return IntegerStartingFrom(n + 1)
		},
	)
}

フィボナッチ数全体を、以下の2つで構成しているところとか

  • 無限に長いかもしれないストリーム2つを足したストリームを足したストリームを得るAddStream
  • fibsとfibsをずらしたfibs.Cdr()
func GenerateFib2() Stream[int] {
	return Cons(
		0,
		func() Stream[int] {
			return Cons(
				1,
				func() Stream[int] {
					fibs := GenerateFib2()
					return AddStream(fibs.Cdr(), fibs)
				},
			)
		},
	)
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages