Fulyn

ハロー

   main
     putchar('h')
     putchar('e')
     putchar('l')
     putchar('l')
     putchar('o')
   end

ユークリッドの互除法

   gcd :: [int => int => int]
   
   main
     putnum(gcd(1547, 2093))
   end
   
   gcd(x, y) : tailcall
     tmp = x
     x = ? les(x, y)
          | true -> y
          | false -> x
     y = ? eql(x, tmp)
          | true -> y
          | false -> tmp
     ? mod(x, y)
     | 0 -> y
     | () -> gcd(y, mod(x, y))
   end

1~10000の合計

   main
     sum = x :: int => y :: int => div(mul(add(x, y), sub(y, add(x, 1)), 2)
     sum(0, 10000)
   end

for文っぽいのの定義

   for :: [int => [int => int] => [int => int] => [int => int] => int]
   
   for(x, comp, next, exec)
     ? comp(x)
     | true -> exec(x)
     | false -> $
     1 + for(next(x), comp, next, exec)
   end

グラデーション

   draw :: [int]
   draw2 :: [int]
   winx :: int
   winy :: int
   col :: int
   
   main
     col = 0xFF0000
     openwin(256, 256)
     draw()
   end
   
   draw() : tailcall
     draw2()
     winy = 0
     winx = add(winx, 1)
     ? gra(winx, 255)
     | true -> 0
     | false -> draw()
   end
   
   draw2() : tailcall
     drawpoint(winx, winy, col)
     winy = add(winy, 1)
     col = add(col, 1)
     ? gra(winy, 255)
     | true -> 0
     | false -> draw2()
   end

フィボナッチ

   fibonatti :: [int => int => int]
   
   main
     fibonatti(0, 1)
   end
   
   fibonatti(left, right) : tailcall
     next = add(left, right)
     putnum(next)
     ? les(next, 1000)
     | true -> fibonatti(right, next)
     | false -> 0
   end

クロージャ

   main
     b = 6
     func = x :: int => y :: int => mul(b, add(x,y))
     putnum(func(3, 4))
   end

fizzbuzz(fizz, buzz, fizzbuzzは文字を表示する関数なので省略)

   solve :: [int => int]
   
   main
     for(1, x :: int => loq(x, 10000), x :: int => add(x, 1), x :: int => solve(x))
   end
   
   solve(x)
     ? -1
     | eql(mod(x, 15), 0) -> fizzbuzz()
     | eql(mod(x, 3), 0) -> fizz()
     | eql(mod(x, 5), 0) -> buzz()
     | () -> putnum(x)
   end

配列

   main
     arr = array_new(3)
     array_set(arr, 0, 9)
     array_set(arr, 1, 5)
     array_set(arr, 2, 2)
     putnum(arr(0))
     putnum(arr(1))
     putnum(arr(2))
   end

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS