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