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

Church Numerals

Church Numerals

社内LT大会 0x64物語Reboot #0x0C Lambda 資料

HORINOUCHI Masato

March 26, 2018
Tweet

More Decks by HORINOUCHI Masato

Other Decks in Programming

Transcript

  1. νϟʔν਺ͷఆٛ 0 := λf x. x 1 := λf x.

    f x 2 := λf x. f (f x) 3 := λf x. f (f (f x)) ↓RubyͰॻ͘ͱ… cn_0 = lambda { |f, x| x } cn_1 = lambda { |f, x| f.call(x) } cn_2 = lambda { |f, x| f.call(f.call(x)) } cn_3 = lambda { |f, x| f.call(f.call(f.call(x))) }
  2. ޙଓ SUCC := λn f x. f (n f x)

    ↓RubyͰॻ͘ͱ… succ = lambda { |n| lambda { |f, x| f.call(n.call(f, x)) } }
  3. Ճࢉ PLUS := λm n f x. m f (n

    f x) ↓RubyͰॻ͘ͱ… plus = lambda { |m, n| lambda { |f, x| m.call(f, (n.call(f, x))) } }
  4. Next Step ܭࢉػϓϩάϥϜͷߏ଄ͱղऍ (௨শ SICP) MITͷೖ໳ίʔεͰ࢖͏ܭࢉػՊֶͷ༏ ΕͨڭՊॻ ϋϧɾΤΠϒϧιϯ, δΣϦ ʔɾαεϚϯ,

    δϡϦʔɾαεϚϯڞஶ(࿨ ాӳҰ༁)ʮܭࢉػϓϩάϥϜͷߏ଄ͱղ ऍ ୈೋ൛ʯ(ϐΞιϯɾΤσϡέʔγϣϯ 2000೥). දࢴͷຐज़ࢣΏ͑ʹͦ͏͍ΘΕ Δ. LISP/Schemeੈքͷ੟యͷͻͱͭ.