Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Nyarlathotep

17,605 views

Published on

いつもニコニコあなたの隣に這い寄る混沌関数型言語ですっ

Published in: Technology
  • Be the first to comment

Nyarlathotep

  1. 1. Nyarlathotepいつもニコニコあなたの隣に い寄る混沌
  2. 2. 自己紹介• 矢倉 大夢 (@hiromu1996)• 高校1年生• パソコン研究部長
  3. 3. 自己紹介• 興味のあること • Linuxカーネル • セキュリティ • 競技プログラミング • 難解プログラミング言語
  4. 4. 自己紹介• OSS奨励賞を受賞 (sora_hと一緒に)• 未踏IT人材発掘・育成事業 • 未踏の合宿から直接きました
  5. 5. (」・ω・)」うー!(/・ω・)/にゃー!
  6. 6. Esolangが ナメられている※Esolang = Esoteric Programming Language   = 難解プログラミング言語
  7. 7. これは由々しき事態だ!
  8. 8. Esolangの怖さを思い知るがよい
  9. 9. 作りました• Nyarlathotep  • 純粋関数型 • 遅延評価 • 型なしラムダ計算 • チューリング完全
  10. 10. SKIコンビネータ• SKIコンビネータ • S := λxyz. xz(yz)  • K := λxy. x  • I := λx.x • これがあればチューリング完全
  11. 11. Uコンビネータ• U := λf. ((f S)K)  • S = (U(U(U(UU))))  • K = (U(U(UU))  • I = (UU) • これさえあればチューリング完全
  12. 12. 入出力• ソースコードが表現する関数に 入力文字列のリストを適用する• その結果のリストを文字列として表示 • 文字はチャーチ数で表す
  13. 13. チャーチ数• 数値を関数で表すための仕組み • 0 := λfx. x • 1 := λfx. fx • 2 := λfx. f(fx) • 3 := λfx. f(f(fx))
  14. 14. というわけで• (」・ω・)」うー! → 関数適用• (/・ω・)/にゃー! → U combinator
  15. 15. サンプル• echo  • (」・ω・)」うー! (/・ω・)/ にゃー! (/・ω・)/にゃー!• 時間があればその他のデモを
  16. 16. さいごに• 同級生の純粋関数型野郎 @_yingtaiに見せたところ• Iotaの命令置換だしレベル低いじゃん • (IotaというEsolangがある)
  17. 17. さいごに• 次回までにはニャルコンビネータとか 作ってきます(予定)• ご清聴ありがとうございました• https://github.com/hiromu/Nyarlathotep

×