括弧のない Lisp ってみた
ちょっとだけ Haskell と OCaml を囓ってたんだけど、Haskell は関数の名前がうにゅ〜>< で、
OCaml は制御構文がうにゅ〜>< なので、Lisp とちょっと混ぜ混ぜしてみるてすと。
どこで拾ったか分からないんだけど、n 番目?のフィボナッチ数を求める関数。
let fib <- function 0 = 0 | 1 = 1 | n = fib (n - 1) + fib (n - 2)
ばっちりパターンマッチ使ってますね。
Lisp っぽくやると… めんどくさっw ってなるので已めましょうw
あと、前はこうしてたんですが:
defun fib 0 = 0 | fib 1 = 1 | fib n = fib (n - 1) + fib (n - 2)
defun にそこまでさせるのもなぁと思って、
function リテラルを作って、fib にバインドする的な感じにしてみた。
let f <- function x = x * x # => f :: function f 6 # => 36 :: integer
ああ、そうそう、代入?は `<-' ね。
Objective Caml[ja.wikipedia.org] のクイックソートをそれっぽくしてみよう。
let quicksort <- funcion [] = [] | (pivot:rest) = let is_less x <- x < pivot in let left, right <- List::partition is_less rest in quicksort left ++ [pivot] ++ quicksort right
まあ、なんというか、ダメだこりゃw