表紙 編集 差分 一覧 最近 短縮 付箋 ログイン 凍結中

/Go言語学習帳/07_fix の差分

ページに戻る
- #start
+ #start fix
  #?anch -e
- **** 内容が未設定のページです
- ブラウザの「戻る」で前のページに戻ってください。
- または[[編集|EDIT]]のリンクをクリックして内容を入力してください。
+ package main
+ import "fmt"
+ 
+ type unaryFunc func (int) int;
+ 
+ func fibMaker(f unaryFunc) unaryFunc {
+     return func (x int) int {
+         if x <= 1 {
+             return 1
+         }
+         return f(x-1) + f(x-2);
+     };
+ }
+ 
+ func fix(g func (unaryFunc) unaryFunc) unaryFunc {
+     return g(func(x int) int { return fix(g)(x) });
+ }
+ 
+ func main() {
+     fib := fix(fibMaker);
+     for i := 1; i < 6; i++ {
+         fmt.Println(fib(i));
+     }
+ }
  #end
»