Haskell golf intro

2,900 views

Published on

第4回 スタートHaskell2 LT

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,900
On SlideShare
0
From Embeds
0
Number of Embeds
1,251
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Haskell golf intro

    1. 1. Haskell golf への おさそい notogawa
    2. 2. だれ?• 大川 徳之• notogawa• Haskell golfer
    3. 3. golf ?• code golf (short codingとも) • 「より少ないバイト数で所与の課題 をプログラミングする遊び。より少 ない打(鍵)数を競うところがゴルフに 似ているところからの命名。」(はて なキーワードより)
    4. 4. Haskell golf 場• Haskell golf といえば • anarchy golf • AtCoder でもできなくはない?
    5. 5. おもしろいの?
    6. 6. 実際タノシイ!• パズルや制限プレイの感覚と同じ• 雰囲気がよくわかるエントリー • あなごるの楽しみ方
    7. 7. Haskell golf の特徴• 抽象的にみると短くなりやすい!• 短かくなってもわかりやすい!
    8. 8. やってみよう!• 第1回スタートHaskell2 練習問題 より • 1 から 10 までのすべての整数で割り切れ る数字 • 簡単のため最小の1個を出力としましょう
    9. 9. 普通に書くと• うろおぼえですが当時出てた回答例 main :: IO () main = print $ head [ n | n <- [ 1 .. ] , and [ 0 == mod n d | d <- [ 1 .. 10 ] ] ]こんなだったような?(当時はまだIOやってないので,適当に加えました)
    10. 10. この問題って結局...• 1∼10で割り切れる数 • = 1∼10の公倍数 • 最小公倍数の関数があるじゃない • lcm :: Integral a => a -> a -> a
    11. 11. 縮めていこうmain :: IO ()main = print $ 1 `lcm` 2 `lcm` 3 `lcm` 4 `lcm` 5 `lcm` 6 `lcm` 7 `lcm` 8 `lcm` 9 `lcm` 10 アッ!この計算foldだ!進研ゼミで(rymain :: IO ()main = print $ foldl1 lcm [ 1 .. 10 ] なくてもいい型シグネチャや空白を消すmain=print$foldl1 lcm[1..10]
    12. 12. 危険性• golfしかできなくなる • 「Haskellわかりませんがgolfはでき ます.」という謎スキル• お仕事では控えたほうがいいかも • やるなよ?やるなよ?
    13. 13. おわりやさしいgolfer達がみんなを待ってます
    14. 14. 文献• Haskell Golf 入門• Short Coding 職人達の技法 • Haskellじゃないけど参考になる

    ×