Nyarlathotep
いつもニコニコあなたの隣に   い寄る混沌
自己紹介

• 矢倉 大夢 (@hiromu1996)
• 高校1年生
• パソコン研究部長
自己紹介
• 興味のあること
 • Linuxカーネル
 • セキュリティ
 • 競技プログラミング
 • 難解プログラミング言語
自己紹介

• OSS奨励賞を受賞 (sora_hと一緒に)
• 未踏IT人材発掘・育成事業
 • 未踏の合宿から直接きました
(」・ω・)」うー!(/・ω・)/にゃー!
Esolangが
     ナメられている

※Esolang = Esoteric Programming Language 
       = 難解プログラミング言語
これは由々しき事態だ!
Esolangの怖さを
思い知るがよい
作りました
• Nyarlathotep 
 • 純粋関数型
 • 遅延評価
 • 型なしラムダ計算
 • チューリング完全
SKIコンビネータ
• SKIコンビネータ
 • S := λxyz. xz(yz) 
 • K := λxy. x 
 • I := λx.x 
• これがあればチューリング完全
Uコンビネータ
• U := λf. ((f S)K) 
 • S = (U(U(U(UU)))) 
 • K = (U(U(UU)) 
 • I = (UU) 
• これさえあればチューリング完全
入出力

• ソースコードが表現する関数に
 入力文字列のリストを適用する

• その結果のリストを文字列として表示
 • 文字はチャーチ数で表す
チャーチ数
• 数値を関数で表すための仕組み
 • 0 := λfx. x
 • 1 := λfx. fx
 • 2 := λfx. f(fx)
 • 3 := λfx. f(f(fx))
というわけで


• (」・ω・)」うー! → 関数適用
• (/・ω・)/にゃー! → U combinator
サンプル

• echo 
 • (」・ω・)」うー! (/・ω・)/
  にゃー! (/・ω・)/にゃー!

• 時間があればその他のデモを
さいごに

• 同級生の純粋関数型野郎
 @_yingtaiに見せたところ

• Iotaの命令置換だしレベル低いじゃん
 • (IotaというEsolangがある)
さいごに

• 次回までにはニャルコンビネータとか
  作ってきます(予定)

• ご清聴ありがとうございました
• https://github.com/hiromu/Nyarlathotep

Nyarlathotep