Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Haskell 始めました

Haskell 始めました

株式会社OCC 金城裕
社内勉強会用

Yutaka Kinjo

March 02, 2014
Tweet

More Decks by Yutaka Kinjo

Other Decks in Technology

Transcript

  1. HASKELL࢝Ί·ͨ͠ גࣜձࣾ OCC Yutaka Kinjo

  2. ֓ཁ abstract

  3. •Haskell ͱ͸ •७ਮؔ਺ܕݴޠ •cɺjavaɺrubyͳͲͱ͍ͩͿҧ͏ •(ͳʹ͔ɺՄೳੑΛײ͡Δ!!)

  4. •ͨͿΜɺࣾ಺Ͱৄ͍͠ਓ͸͍ͳ͍ •Haskell ͷϓϩάϥϛϯάύϥμΠϜ͸ڵຯਂ ͍ •ৄ͘͠ͳ͓ͬͯ͘ͱ໨ཱͯΔ͔΋ •ͪΐͬͱ΍ͬͯΈͯɺ໘ന͔ͬͨ

  5. ͜ΕͰษڧͪ͏

  6. ֊৐ͷܭࢉ factorial

  7. fac 0 = 1 fac n = n * fac(n-1)

    main = print (fac 42) 1405006117752879898543142606244511569936384000000000 $ ghc fac.hs $ ./fac
  8. fac 0 = 1 fac n = n * fac(n-1)

    main = print (fac 42) 引数のパターン を記述できる fac n = if n == 0 then 1 else n * fac(n-1) if文かかなくてもいい
  9. FizzBuzz

  10. None
  11. ແݶϦετ Infinite list

  12. list = [1,2,3,4] inf_list = [1..]

  13. ஗ԆධՁ lazy evaluation

  14. inf_list = [1..] take 3 inf_list [1,2,3]

  15. inf_list = [1..] take 52 inf_list [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,3 9,40,41,42,43,44,45,46,47,48,49,50,51,52]

  16. ΧϦʔԽ currying

  17. •Haskell ͷؔ਺͸࣮͸ 1 ͭͷҾ਺͔͠औΒͳ͍ • ෳ਺ͷҾ਺ΛͱΔؔ਺͸࣮͸ΧϦʔԽ͞Ε͍ͯΔ

  18. max 1 2 > 2 ෳ਺ͷҾ਺ΛͱΔؔ਺͸ΧϦʔԽ͞Ε͍ͯΔ

  19. (max 1) 2 > 2 ͜͏͡Ό!!

  20. 1と引数を比べる関数になる (max 1) 2

  21. これは関数 (max 1)

  22. 部分適応された関数 (max 1) デフォルトですでに 1が設定された max

  23. 関数名をつけれる let maxOne = (max 1) maxOne 2 > 2

  24. ちょっといじる let maxOne = (max 1.0) maxOne 0.5 > 1.0

  25. ࣮༻ྫ application

  26. •৽೔మॅۚιϦϡʔγϣϯζ • ࣌Ձձܭύοέʔδ੡඼ʮBancMeasureʯ •GREE • ಺੡ͷKVSσʔλϕʔεͷ؅ཧ • ը૾αʔόͷϑϩϯτΤϯυ

  27. ·ͱΊ summary

  28. • ؒҧͬͯͨΒ͝ΊΜͳ͍͞ • for จ͸ ࠶ؼͰফ͑ͨ • if จ͸ ύλʔϯϚονͰফ͑ͨ

    • ͳΜ͔ɺΧϦʔԽมଶ • ࣮༻ྫ΋࣮͸͋Δ • ূ໌ͱ͔Ͱ͖ͦ͏ • (ͳʹ͔ɺՄೳੑΛײ͡Δ!!)
  29. ࢀߟ reference

  30. • http://maoe.hatenadiary.jp/entry/2013/12/12/195322 • http://itpro.nikkeibp.co.jp/article/COLUMN/20130112/449224/ • ॻ੶ : ͍͢͝Haskell ͨͷֶ͘͠΅͏