トップ «前の日記(2014-07-11 (Fri)) 最新 次の日記(2014-07-16 (Wed))» 編集

uDiary

海野秀之(うんのひでゆき)の外部記憶

Twitter (twilog) / RSS / アンテナ / ぶくま

2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|

2014-07-14 (Mon)

つぶやき

すっかり習慣化していたようなことでも、ある日ぴたりとやめることは、案外簡単かも。
「上手につきあう」よりは、よほど。


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 はつかわないので、あんまりピンとこない。

[Haskell] パターンマッチ

The implementation of functional programming language の 5 章、Efficient Compilation of pattern-matching を読みながら、パターンコンパイラのお試しコードを書いてみた。

ファイルはこちら:Patterns.hs

demo1

たとえば、

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

demo3

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 )

demo 4

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

demo 5

foo True = 1 -- missing a pattern for False

↑これは、こう↓

-- demo5
case _u1 of
  True  ->
      1
  False  ->
      error

まだ、しっくり理解できているわけじゃなくて、とりあえず動くコードを書いてみた段階。
また、オーバーラップのあるパターンの対処はしてない (demo 2 がとばされているのは、そのため)。

[Haskell][Tiger] chap7

Formal Parameters の access をきちんと処理するようにして、これで終わりかなと思ったら…

  • Static Link つみ忘れ
  • String の比較

の2つがすくなくとも積み残し。ノートに書いてあったのに。

本日のツッコミ(全3件) [ツッコミを入れる]
# うんの (2014-07-15 (Tue) 09:49)

パターンマッチのコンパイル前後で等価になっているかどうかは、Quickcheck を用いたテストができるような気がした。

# うんの (2014-07-15 (Tue) 10:15)

> Quickcheck を用いたテスト <br> <br>こんな感じかな。こりゃいいや。 <br>http://uhideyuki.sakura.ne.jp/files2014/test4.hs

# うんの (2014-07-15 (Tue) 10:18)

感想: QuickCheck すげぇ。


2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|
Categories 3imp | Card | Cutter | Dalvik | Euler | Football | GAE/J | Hand | Haskell | Re:View | Ruby | Scheme | TQD | Tiger | TigerBook読 | UikiTeXi | Verilog | Violin | Web | parconc | tDiary | お勉強 | エントロピー | ツン読 | | 将棋 | 政治について | | 模写してみよう | 確率論 | 設定など | 雑文 | 音声