2012.09.08(土): http://www.zusaar.com/event/383004
入門用としてC#で学ぶF#入門の資料を使用しました。
hello.fsをfscでコンパイルしてmonoで実行
printfnのテストとnの由来
![](https://image02.seesaawiki.jp/n/i/n7shi/4b137a2179813884.jpg)
束縛について(代入とは言わない)
![](https://image02.seesaawiki.jp/n/i/n7shi/56a1563b256ff1b2.jpg)
束縛した後のイコールは比較(C言語などの==)になる
![](https://image02.seesaawiki.jp/n/i/n7shi/019b84b0c87bf2ca.jpg)
数学の座標に似た代入の記法
![](https://image01.seesaawiki.jp/n/i/n7shi/c7208f6146634b47.jpg)
C言語のfoo(1,2)はF#でfoo 1 2と書くが、foo(1+2)はどちらも同じ意味
![](https://image02.seesaawiki.jp/n/i/n7shi/7da34c1da72d2d0d.jpg)
foo 1+2は(foo 1)+2と解釈される
![](https://image02.seesaawiki.jp/n/i/n7shi/e93cab2e4cea2440.jpg)
数字、文字列、関数など何でも束縛できる
![](https://image01.seesaawiki.jp/n/i/n7shi/7788cc1481d7ee06.jpg)
数学の関数 f(x)=5x との比較
![](https://image01.seesaawiki.jp/n/i/n7shi/5ac3151f9699e925.jpg)
C#のラムダ式は x => x * 5 と書く
![](https://image02.seesaawiki.jp/n/i/n7shi/84f0f3677122c668.jpg)
1+2*3を抽象構文木(AST)に変換
![](https://image02.seesaawiki.jp/n/i/n7shi/dd8eeded6381c58c.jpg)
F#でASTを判別共用体で表記
![](https://image02.seesaawiki.jp/n/i/n7shi/5c6fae77aa2a421f.jpg)
判別共用体のインデントを一行と複数行で対比
![](https://image02.seesaawiki.jp/n/i/n7shi/abd5ef627a93b6aa.jpg)
継承による多態(内部)と判別共用体の評価関数(外部)の位置の比較
![](https://image01.seesaawiki.jp/n/i/n7shi/2d40f6c077956005.jpg)
サンプルの流れと構文解析の占める割合(80%)
![](https://image01.seesaawiki.jp/n/i/n7shi/ca2a1161095a1e04.jpg)
ASTの評価例
![](https://image01.seesaawiki.jp/n/i/n7shi/48b52e3986daac1c.jpg)
文字列のスライス
![](https://image02.seesaawiki.jp/n/i/n7shi/cc1a4fe279bdb938.jpg)
BNFにおけるtermの例
![](https://image02.seesaawiki.jp/n/i/n7shi/0c51e87ec4c52702.jpg)
expr, term, factorによる計算順の表現
![](https://image01.seesaawiki.jp/n/i/n7shi/f2b046cfe9aa9266.jpg)
1+2のパース例
![](https://image02.seesaawiki.jp/n/i/n7shi/1d52a6bb220b44be.jpg)
Lexerが文字列を区切る
![](https://image01.seesaawiki.jp/n/i/n7shi/093f6185e4ed00a0.jpg)
LexerからASTを構築
![](https://image01.seesaawiki.jp/n/i/n7shi/3ed3be8261f96e19.jpg)
1+2xのASTを微分
![](https://image01.seesaawiki.jp/n/i/n7shi/dbd3ace2ddd5077d.jpg)
コンパイル(.fs→.exe)とスクリプト(.fsx)の対比
printfnのテストとnの由来
![](https://image02.seesaawiki.jp/n/i/n7shi/4b137a2179813884.jpg)
束縛について(代入とは言わない)
![](https://image02.seesaawiki.jp/n/i/n7shi/56a1563b256ff1b2.jpg)
束縛した後のイコールは比較(C言語などの==)になる
![](https://image02.seesaawiki.jp/n/i/n7shi/019b84b0c87bf2ca.jpg)
数学の座標に似た代入の記法
![](https://image01.seesaawiki.jp/n/i/n7shi/c7208f6146634b47.jpg)
C言語のfoo(1,2)はF#でfoo 1 2と書くが、foo(1+2)はどちらも同じ意味
![](https://image02.seesaawiki.jp/n/i/n7shi/7da34c1da72d2d0d.jpg)
foo 1+2は(foo 1)+2と解釈される
![](https://image02.seesaawiki.jp/n/i/n7shi/e93cab2e4cea2440.jpg)
数字、文字列、関数など何でも束縛できる
![](https://image01.seesaawiki.jp/n/i/n7shi/7788cc1481d7ee06.jpg)
数学の関数 f(x)=5x との比較
![](https://image01.seesaawiki.jp/n/i/n7shi/5ac3151f9699e925.jpg)
C#のラムダ式は x => x * 5 と書く
![](https://image02.seesaawiki.jp/n/i/n7shi/84f0f3677122c668.jpg)
1+2*3を抽象構文木(AST)に変換
![](https://image02.seesaawiki.jp/n/i/n7shi/dd8eeded6381c58c.jpg)
F#でASTを判別共用体で表記
![](https://image02.seesaawiki.jp/n/i/n7shi/5c6fae77aa2a421f.jpg)
判別共用体のインデントを一行と複数行で対比
![](https://image02.seesaawiki.jp/n/i/n7shi/abd5ef627a93b6aa.jpg)
継承による多態(内部)と判別共用体の評価関数(外部)の位置の比較
![](https://image01.seesaawiki.jp/n/i/n7shi/2d40f6c077956005.jpg)
サンプルの流れと構文解析の占める割合(80%)
![](https://image01.seesaawiki.jp/n/i/n7shi/ca2a1161095a1e04.jpg)
ASTの評価例
![](https://image01.seesaawiki.jp/n/i/n7shi/48b52e3986daac1c.jpg)
文字列のスライス
![](https://image02.seesaawiki.jp/n/i/n7shi/cc1a4fe279bdb938.jpg)
BNFにおけるtermの例
![](https://image02.seesaawiki.jp/n/i/n7shi/0c51e87ec4c52702.jpg)
expr, term, factorによる計算順の表現
![](https://image01.seesaawiki.jp/n/i/n7shi/f2b046cfe9aa9266.jpg)
1+2のパース例
![](https://image02.seesaawiki.jp/n/i/n7shi/1d52a6bb220b44be.jpg)
Lexerが文字列を区切る
![](https://image01.seesaawiki.jp/n/i/n7shi/093f6185e4ed00a0.jpg)
LexerからASTを構築
![](https://image01.seesaawiki.jp/n/i/n7shi/3ed3be8261f96e19.jpg)
1+2xのASTを微分
![](https://image01.seesaawiki.jp/n/i/n7shi/dbd3ace2ddd5077d.jpg)
コンパイル(.fs→.exe)とスクリプト(.fsx)の対比
![](https://image01.seesaawiki.jp/n/i/n7shi/15d39be55b1d8299.jpg)
最新コメント