括弧のない Lisp ってみた

ちょっとだけ HaskellOCaml を囓ってたんだけど、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