海野秀之(うんのひでゆき)の外部記憶
Twitter (twilog) / RSS / アンテナ / ぶくま
すっかり習慣化していたようなことでも、ある日ぴたりとやめることは、案外簡単かも。
「上手につきあう」よりは、よほど。
Ask, or it will not be given to you.
つまり、「本当はそう願っているだけ♪」ではいけないな、と。
「きゃりーは日本民族の誇り」、ワーナー会長が語る快挙
http://business.nikkeibp.co.jp/article/interview/20140711/268522/
それ、きゃりーぱみゅぱみゅと ystk がすごいという話であって、「日本」に広げるの無理では。
「プログラミング言語の基礎概念」読みたいので、買うか悩む。
買っても積んどくだけちゃうんかという点で。
これ以上、積むだけのために本を買いたくない。
短期目標は、Pretty Print を会得する、かな。
RWH では、べつに Pretty Print ライブラリに言及してないのか。
Text.PrettyPrint が簡単/便利すぎて感動する暇がなかった
Haskell はハードタブの幅を 8 だと思って処理するが、F# だったかな、は 4 だと思っているらしい。
これは、Unix 文化か Windows 文化か、という話らしいのだが、
「ハードタブつかうな」で済む話でもあるような。Haskeller はつかわないので、あんまりピンとこない。
The implementation of functional programming language の 5 章、Efficient Compilation of pattern-matching を読みながら、パターンコンパイラのお試しコードを書いてみた。
ファイルはこちら:Patterns.hs
たとえば、
mappairs f [] ys = []
mappairs f (x:xs) [] = []
mappairs f (x:xs) (y:ys) = f x y : mappairs f xs ys
↑これは、こうなる↓
-- demo1
case xs' of
Nil ->
[]
Cons x xs ->
case ys' of
Nil -> []
Cons y ys ->
f x y : mappairs f xs ys
nodups [] = []
nodups [x] = []
nodups (y:x:xs) = if y == x then nodups (x:xs) else y:nodups (x:xs)
↑これは、こうなる↓
-- demo3
case xs'' of
Nil ->
[]
Cons x' xs' ->
case xs' of
Nil -> [ x' ]
Cons x xs ->
if x' == x then nodups ( x : xs ) else x' : nodups ( x : xs )
case e of
[x,True] -> x
[False] -> True
z -> False
↑これは、こうなる↓んだけど、あってんのかなぁ。
-- demo4
case e of
Nil ->
False
Cons _u2 _u3 ->
case _u3 of
Nil -> case _u2 of
True -> False
False -> case _u3 of Nil -> True
Cons _u4 _u5 -> False
Cons _u4 _u5 ->
case _u4 of
True -> case _u5 of Nil -> _u2
Cons _u6 _u7 -> case _u2 of True -> False
False -> case _u3 of Nil -> True
Cons _u4 _u5 -> False
False -> case _u2 of True -> False
False -> case _u3 of Nil -> True
Cons _u4 _u5 -> False
foo True = 1 -- missing a pattern for False
↑これは、こう↓
-- demo5
case _u1 of
True ->
1
False ->
error
まだ、しっくり理解できているわけじゃなくて、とりあえず動くコードを書いてみた段階。
また、オーバーラップのあるパターンの対処はしてない (demo 2 がとばされているのは、そのため)。
パターンマッチのコンパイル前後で等価になっているかどうかは、Quickcheck を用いたテストができるような気がした。
> Quickcheck を用いたテスト <br> <br>こんな感じかな。こりゃいいや。 <br>http://uhideyuki.sakura.ne.jp/files2014/test4.hs
感想: QuickCheck すげぇ。