浮気した

The Little Schemer (The MIT Press)』もやっと10章。8章あたりから難しくなる。
ちょっと息抜きに、と思ったら『ふつうのHaskellプログラミング』に浮気してしまった。
今週だけは・・・いいよね?と、とりあえず1部読みました。

The Little Schemer (The MIT Press)ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門


なんとなく、SchemeHaskellでmap関数を定義してみる。

Schemeでは

(mymap add1 '(10 20 30 40 50))

(define add1
  (lambda (n)
    (+ n 1)))

(define mymap
  (lambda (f l)
    (cond ((null? l) '())
          (else (cons (f (car l))
                      (mymap f (cdr l)))))))

Haskellでは

main = print $ mymap add1 [10, 20, 30, 40, 50]

add1 :: Int -> Int
add1 n = n + 1

mymap :: (a -> b) -> [a] -> [b]
mymap f [] = []
mymap f (x:xs) = f x : map f xs


Haskellではprintしてるのに、Schemeでは対話環境にまかせてるのは置いておいて。
どちらも、

11, 21, 31, 41, 51

のリストが返ってくるわけですが、

Haskellのほうが簡潔で分かりやすいはずなのに、
Schemeの方が分かりやすいと感じたのはSchemeに慣れてきたからでしょうか。

がんばって「The Little Schemer」読み終えるぞぅ
でも、とりあえずふつうのHaskellも2部早く読みたい。


そういえば、今日は3月3日。耳の日ということですが、
ぞぅは鼻が長いだけでなく、耳も大きいぞぅ、と言ってみる。さぶっ。
こんなことを言わせるのも、Little Schemerの表紙が愛くるしいからだ。と責任転嫁。ぞぅ俺の嫁。さぶっ。


それにしても、白とのハイライティングは不気味だ