28
めっちゃすごいスライド 博士の異常な愛 または私は如何にして心配 するのを止めて 参照透明 愛するようになったか

すごいスライド(Lazy K 紹介)

  • Upload
    -

  • View
    585

  • Download
    4

Embed Size (px)

DESCRIPTION

Web: http://nna774.net/reikai01/

Citation preview

Page 1: すごいスライド(Lazy K 紹介)

めっちゃすごいスライド

博士の異常な愛情

または私は如何にして心配するのを止めて参照透明を愛するようになったか

KMC 1回 nona7

Page 3: すごいスライド(Lazy K 紹介)

etc...

KMC での活動プライベートクラウド計画 - 提督

Coq勉強会RICOH and Java Developer Challenge Plus 2013NchippakuTwitterTumblrKanColle

KMCアドベントカレンダー2013

Page 4: すごいスライド(Lazy K 紹介)

このスライド

Page 5: すごいスライド(Lazy K 紹介)

reveal.js とかいうすごいやつ

Page 6: すごいスライド(Lazy K 紹介)

html で適当に書いてひな形に放り込めばかっこいいスライドになる

Page 7: すごいスライド(Lazy K 紹介)

でも

Page 8: すごいスライド(Lazy K 紹介)

生のHTML

Page 9: すごいスライド(Lazy K 紹介)

書きたくない!!!1111

閉じタグの対応とか考えるのヤダー

Page 10: すごいスライド(Lazy K 紹介)

???「大丈夫よ, 司令官! S式があるじゃない!」

竹内郁雄

いまRubyがブームだが、Rubyは要するにカッコのないLisp。XMLもぶ厚いカッコのあるLisp。

Page 11: すごいスライド(Lazy K 紹介)

というわけでS式からHTML に変換するの最近作りました.htsexp(仮)

まだ未発覚のバグ潜んでそうとりあえずこのスライドはコンパイルできた

既存のものもあったけど不満点あったので作ってみた

Page 12: すごいスライド(Lazy K 紹介)

かんわきゅうだい

Page 13: すごいスライド(Lazy K 紹介)

楽しいLazyK 入門

Page 14: すごいスライド(Lazy K 紹介)

はじめに

Page 15: すごいスライド(Lazy K 紹介)

このスライドは難解プログラミング言語勉強会の宣伝です.あんまり詳しい話は今回はパス言語の紹介ぐらいだけ

詳しくは難解~に参加しましょう!

Page 16: すごいスライド(Lazy K 紹介)

What is LazyK?

Page 17: すごいスライド(Lazy K 紹介)

組み込み関数は3つだけI = λx. xK = λxy. xS = λxyz. x z (y z)

Page 18: すごいスライド(Lazy K 紹介)

I コンビネータI x = xλx. x

引数を一つ取ってその引数を返す関数とったものをそのまま返すだけIdentity Combinator

実は SKK == I が成り立つのでなくてもいい

Page 19: すごいスライド(Lazy K 紹介)

K コンビネータK x y = xλxy. x

2引数をとって1つ目の引数を返す関数「引数を一つ取って(xとする),「引数を一つ取ってx を返す関数」を返す関数」と言ってもいい-- ややこしいなら一旦置いといていいかも

Constant CombinatorKonstant(独)-- 今回調べてて知った

定数関数

Page 20: すごいスライド(Lazy K 紹介)

S コンビネータS x y z = x z (y z)λxyz. x z (y z)

3つ引数を取って, 1つ目と2つ目に3つ目を適用する関数Sharing Combinator第三引数をシェアしてる感じ

Page 21: すごいスライド(Lazy K 紹介)

この3つと括弧だけで書く(コンビネータスタイルの場合は)

めっちゃ簡単!!

Brainfu*k とか命令数多すぎ!!

Page 22: すごいスライド(Lazy K 紹介)

「これらの組み合わせだけでどうやってプログラム書くの.組み合わせても謎の関数しかできないですよね 」

Page 23: すごいスライド(Lazy K 紹介)

入力として受け取ったものを,あなたが書いたプログラム- "謎の関数" - に引数として渡して

出てきたものが出力です.正確には入力として渡された文字列がチャーチ数のリストとしてエンコードされてそれが渡されて==

-- 詳しくは難解~で!!

Page 24: すごいスライド(Lazy K 紹介)

サンプルコードecho

I

Page 25: すごいスライド(Lazy K 紹介)

サンプルコードエラトステネスのふるい

K(SII(S(K(S(S(K(SII(S(S(KS)(S(K(S(KS)))(S(K(S(S(KS)(SS(S(S(KS)K))(KK)))))(S(S(KS)(S(KK)(S(KS)(S(S(KS)(S(KK)(S(KS)(S(S(KS)(S(KK)(SII)))(K(SI(KK)))))))(K(S(K(S(S(KS)(S(K(SI))(S(KK)(S(K(S(S(KS)K)(S(S(KS)K)I)(S(SII)I(S(S(KS)K)I)(S(S(KS)K)))))(SI(K(KI)))))))))(S(KK)K)))))))(K(S(KK)(S(SI(K(S(S(S(S(SSK(SI(K(KI))))(K(S(S(KS)K)I(S(S(KS)K)(S(S(KS)K)I))(S(K(S(SI(K(KI)))))K)(KK))))(KK))(S(S(KS)(S(K(SI))(S(KK)(S(K(S(S(KS)K)))(SI(KK))))))(K(K(KI)))))(S(S(KS)(S(K(SI))(SS(SI)(KK))))(S(KK)(S(K(S(S(KS)K)))(SI(K(KI)))))))))(K(K(KI))))))))))(K(KI)))))(SI(KK)))))(S(K(S(K(S(K(S(SI(K(S(K(S(S(KS)K)I))(S(SII)I(S(S(KS)K)I)))))))K))))(S(S(KS)(S(KK)(SII)))(K(SI(K(KI)))))))(SII(S(K(S(S(KS)(S(K(S(S(SI(KK))(KI))))(SS(S(S(KS)(S(KK)(S(KS)(S(K(SI))K)))))(KK))))))(S(S(KS)(S(K(S(KS)))(S(K(S(KK)))(S(S(KS)(S(KK)(SII)))(K(S(S(KS)K)))))))(K(S(S(KS)

Page 26: すごいスライド(Lazy K 紹介)

まとめ難解プログラミング勉強会に参加しよう!ゆるふわですくわしくやりますいろいろ今回は説明すっ飛ばした

参照透明な海に潜りましょう.ものまね鳥をまねましょう

Page 27: すごいスライド(Lazy K 紹介)

ありがとうございましたなにか質問など

Page 28: すごいスライド(Lazy K 紹介)

参考文献関数型λカ娘一巻Lazy K 公式サイト

ラムダ計算入門Lazy K 2013年4月15日 (月) 08:39; Fumiexcel による版Lazy K 入門