関数型言語MLについて語るスレッドです。
MLは、確固とした理論的背景を持つ言語でありながら、
現実的なソフトの開発にも使用できる実用性を備えた言語です。
また、プログラミングの初心者が最初に学習する言語としても優れています。
総本山
Standard ML http://www.smlnj.org/
Objective Caml http://caml.inria.fr/ocaml/
前スレ
関数型言語ML(SML, OCaml, etc.), Part 5
http://pc12.2ch.net/test/read.cgi/tech/1186292994/
関数型言語ML (SML, OCaml, etc.), Part 6
■ このスレッドは過去ログ倉庫に格納されています
2009/06/15(月) 07:15:21
2009/06/15(月) 19:45:36
プログラミングの初心者が最初に学習する言語としても優れているのに、
学習者が増えないのはなぜなの?
学習者が増えないのはなぜなの?
2009/06/15(月) 19:57:50
>>2
教える側が理解していないから。
教える側が理解していないから。
2009/06/15(月) 20:04:59
>>2
初心者が日常で使うにはハードルが高いからかな
初心者が日常で使うにはハードルが高いからかな
2009/06/16(火) 01:24:50
前スレでもあったけどOcamlとHaskellってどっちが初心者に向いてるのかな?
Lispいじってた俺にとってはOcamlの方が見た感じ楽そうに見えるけど
Lisp、Ocaml、Haskellマスターの意見が聞いてみたいな
Lispいじってた俺にとってはOcamlの方が見た感じ楽そうに見えるけど
Lisp、Ocaml、Haskellマスターの意見が聞いてみたいな
2009/06/16(火) 09:59:16
standard MLをさらっとやってから決めれば。
7デフォルトの名無しさん
2009/06/16(火) 22:59:258デフォルトの名無しさん
2009/06/16(火) 23:52:08 オブジェクトを使わずにステートマシンを作るのによい方法はありますか?
勉強のためにStateパターンをモジュールを使ってやってみようと思ったのですが、
相互依存を回避するうまい方法が思いつきません。
また、状態をそれぞれ別モジュールにするにせよ、一箇所にまとめるにせよ、動的に切り替えるためには
結局パターンマッチさせてそれらを呼び出すようになると思いますが、もっとスマートな方法はありますか?
勉強のためにStateパターンをモジュールを使ってやってみようと思ったのですが、
相互依存を回避するうまい方法が思いつきません。
また、状態をそれぞれ別モジュールにするにせよ、一箇所にまとめるにせよ、動的に切り替えるためには
結局パターンマッチさせてそれらを呼び出すようになると思いますが、もっとスマートな方法はありますか?
2009/06/17(水) 10:23:08
>>8
まずは具体的な実装例を挙げてみたら?
まずは具体的な実装例を挙げてみたら?
2009/06/17(水) 10:43:32
うん、なんか簡単な問題例を出してくれないとわかんないよ。
2009/06/17(水) 10:51:36
state machineの問題例というとよくあるのはストップウォッチとか。
128
2009/06/17(水) 12:36:14 実際の問題を簡単にした問題例です。
流れ:
キャラクタがバイトをして財布がいっぱいになったら銀行へ行く
ということを目標金額まで繰り返し、到達したらその金がなくなるまで
家でごろ寝し、なくなったらまた働く
キャラクタは
・バイトをする : 手持ちが1増える
・銀行で貯金をする : 手持ちを0にし、貯金が1増える
・家で寝る : 貯金が1減る
の状態を取ります。
財布の許容量は3、目標貯金額は5とします。
Ocaml的な解決方法のアドバイスをいただけると幸いです。
ちなみに元々の問題は「実例で学ぶゲームAIプログラミング」
という本の2章に出てくる、上記の問題例にいくつか余分な状態を
追加したようなものです。
元々の問題をとりあえず実装してみたソースとサンプルソースも
あげてみました。
http://www1.axfc.net/uploader/Sc/so/9827.lzh
流れ:
キャラクタがバイトをして財布がいっぱいになったら銀行へ行く
ということを目標金額まで繰り返し、到達したらその金がなくなるまで
家でごろ寝し、なくなったらまた働く
キャラクタは
・バイトをする : 手持ちが1増える
・銀行で貯金をする : 手持ちを0にし、貯金が1増える
・家で寝る : 貯金が1減る
の状態を取ります。
財布の許容量は3、目標貯金額は5とします。
Ocaml的な解決方法のアドバイスをいただけると幸いです。
ちなみに元々の問題は「実例で学ぶゲームAIプログラミング」
という本の2章に出てくる、上記の問題例にいくつか余分な状態を
追加したようなものです。
元々の問題をとりあえず実装してみたソースとサンプルソースも
あげてみました。
http://www1.axfc.net/uploader/Sc/so/9827.lzh
138
2009/06/17(水) 12:42:44 スレ違いではありますが、もう1つ後学のために質問をさせてください。
アップロードするのは初めてでよくわからないままaxfcを
使用したのですが、プログラム板で一般的に使用されている
アップローダーというものはあるのでしょうか?
アップロードするのは初めてでよくわからないままaxfcを
使用したのですが、プログラム板で一般的に使用されている
アップローダーというものはあるのでしょうか?
2009/06/17(水) 14:43:02
>12
その手の奴って素直に状態保持した方が色々スッキリしそうなんだけどどうなのエロイ人
その手の奴って素直に状態保持した方が色々スッキリしそうなんだけどどうなのエロイ人
2009/06/17(水) 16:54:33
>>12
> キャラクタは
> ・バイトをする : 手持ちが1増える
> ・銀行で貯金をする : 手持ちを0にし、貯金が1増える
> ・家で寝る : 貯金が1減る
> の状態を取ります。
ニート解:
キャラクタはバイトせず取り敢えず銀行へ行く
ということを目標金額まで繰り返し、到達したらその金がなくなるまで
家でごろ寝し、なくなったらまた働かずにまた銀行へ行く
> キャラクタは
> ・バイトをする : 手持ちが1増える
> ・銀行で貯金をする : 手持ちを0にし、貯金が1増える
> ・家で寝る : 貯金が1減る
> の状態を取ります。
ニート解:
キャラクタはバイトせず取り敢えず銀行へ行く
ということを目標金額まで繰り返し、到達したらその金がなくなるまで
家でごろ寝し、なくなったらまた働かずにまた銀行へ行く
2009/06/17(水) 17:28:06
継続っぽくすればいいんじゃない?
2009/06/17(水) 22:02:12
コードを晒すにはここがいいよ
http://codepad.org/
http://codepad.org/
18デフォルトの名無しさん
2009/06/17(水) 22:22:20 なんで12の問題にStateパターンが適してるのかよくわからない。。
19デフォルトの名無しさん
2009/06/17(水) 22:31:48 interface State { void whatToDoNext(); } みたいなインターフェイスがあって、
class RichState implements State { public void whatToDoNext() { goToTheBank(); }
class PoorState implements State { public void whatToDoNext() { work(); }
...
みたいなイメージですか?
class RichState implements State { public void whatToDoNext() { goToTheBank(); }
class PoorState implements State { public void whatToDoNext() { work(); }
...
みたいなイメージですか?
2009/06/17(水) 23:05:02
これくらいなら引数に状態を持たせて各状態を手続きで表せばよくね?
2009/06/17(水) 23:07:47
>>20のやり方がいいんじゃねーかな
たぶん>>16も同じこと?
たぶん両者が言ってるのはこんな感じ?(1/2)
type action =
| Work // バイトをする
| Deposite // 銀行で貯金をする
| Rest;; // 家で寝る
type life_state =
| Working // …ということを目標金額まで繰り返し
| Resting;; // ごろ寝
let sigma event state =
match (event, state) with
// バイトをする: 手持ちが1増える
| (Work, (budget, account)) -> (budget + 1, account)
// 銀行で貯金をする: 手持ちを0にし、貯金が1増える
| (Deposite, (budget, account)) -> (0, account + 1)
// 家で寝る: 貯金が1減る
| (Rest, (budget, account)) -> (budget, account - 1);;
たぶん>>16も同じこと?
たぶん両者が言ってるのはこんな感じ?(1/2)
type action =
| Work // バイトをする
| Deposite // 銀行で貯金をする
| Rest;; // 家で寝る
type life_state =
| Working // …ということを目標金額まで繰り返し
| Resting;; // ごろ寝
let sigma event state =
match (event, state) with
// バイトをする: 手持ちが1増える
| (Work, (budget, account)) -> (budget + 1, account)
// 銀行で貯金をする: 手持ちを0にし、貯金が1増える
| (Deposite, (budget, account)) -> (0, account + 1)
// 家で寝る: 貯金が1減る
| (Rest, (budget, account)) -> (budget, account - 1);;
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 【悲報】ジャップ、日中戦争に賛成が5割弱...軍歌の音が聞こえる... [856698234]
- お前ら(ちぎゅちぎゅの実モデルチーズ牛丼)←これw
- 隣の部屋のデブがこっちにまで聞こえる声量でアクビするのがストレスなんだけどマジで死んでくれないかな
- 相対性理論について知ってることを書け
- 本当にうつ病の人は自分からうつ病なんて言わない
- 【乞食速報】プロクオリティ ビーフカレー 96食 4262円 [268244553]
