- 1 名前:デフォルトの名無しさん [04/05/04 14:53]
- Lisp Scheme ML Haskell FP Mirranda など
関数型言語について話し合いましょう 関連スレ 関数型プログラミング言語ML pc3.2ch.net/test/read.cgi/tech/1012445015/ 関数型プログラミング言語Haskell pc3.2ch.net/test/read.cgi/tech/1013846140/ LISP Scheme Part6 pc3.2ch.net/test/read.cgi/tech/1031560687/ Emacs Lisp pc3.2ch.net/test/read.cgi/tech/1004551074/
- 8 名前:デフォルトの名無しさん [04/05/04 15:12]
- 【操作的意味論】kaiunix.cs.shinshu-u.ac.jp/Lesson/ProgLangT/2004/operationalsemantics.html
プログラムの実行結果を判定できるような仕組みを与える事で意味を定義する。 すなわちプログラムを解釈実行できるようなオートマトン(自動機械)を定義する事にな る。 しかしながら何らかの意味では、実行すると言う事で、実装等の関わりが強くな りすぎるという欠点を持つ。 ┌──────┐ ┌──────┐ │ プログラム. │ │ 入力 │ └───┬──┘ └───┬──┘ └───────┬───────┘ │操作的仕様に基づく解釈実行 ↓ ┌──────┐ │ 実行結果 │ └──────┘
- 9 名前:デフォルトの名無しさん [04/05/04 15:13]
- 一般には次のようなイメージになる。定義域をNとしてProgram pを実行する
program_effect(p:Program, input:N): N* is do result := instruction_effect(p.body, input, <>); end rを入力、fを内部状態として、命令iを実行する instruction_effect(i:Instruction, r:N, f:N*): N x N* is do inspect i when Double_to_even then result := <2*r, f> ....... end この様にプログラムをその構成要素に分割し、構成要素毎にどの様な動作をするかを定義する。 この様な定義であるので、必要以上に動作に依存してしま うと言う欠点がある。
|

|