by shigemk2

当面は技術的なことしか書かない

for-comprehensions Haskell vs Scala

リスト内包表記を、ScalaとHaskellでやってみようと思ったんです。というか、Haskellのリスト内包表記をScalaで書き直せないかなと思いました。

こういうやつ。

[(x,y) | x <- [1..9], y <- [1..9], x * y == 24]
[(x+y) | x <- [1..9], y <- [1..9], x * y == 24]

この結果は、上から

[(3,8),(4,6),(6,4),(8,3)]
[11,10,10,11]

これをScalaでやってみたい。結論は、これ。

for (x <- 1 to 9; y <- 1 to 9; z = x * y; if z == 24) yield(x,y)
for (x <- 1 to 9; y <- 1 to 9; z = x * y; if z == 24) yield(x+y)

こういうことですね。直訳したらこうなったけど、List型とかSeq型とかで同じことができるかどうか試してみたいのが今後の課題です。

内包表記について、すごい合同勉強会で話した | そんなこと覚えてない

Daily scala: For-comprehensions