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

Haskell 始めました

Haskell 始めました

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

404b6b310d5fc7680a62ef09a463a794?s=128

Yutaka Kinjo

March 02, 2014
Tweet

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 ͨͷֶ͘͠΅͏