[過去ログ]
関数型言語ML (SML, OCaml, etc.), Part 6 (1002レス)
関数型言語ML (SML, OCaml, etc.), Part 6 http://mevius.5ch.net/test/read.cgi/tech/1245017721/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
8: デフォルトの名無しさん [] 2009/06/16(火) 23:52:08 オブジェクトを使わずにステートマシンを作るのによい方法はありますか? 勉強のためにStateパターンをモジュールを使ってやってみようと思ったのですが、 相互依存を回避するうまい方法が思いつきません。 また、状態をそれぞれ別モジュールにするにせよ、一箇所にまとめるにせよ、動的に切り替えるためには 結局パターンマッチさせてそれらを呼び出すようになると思いますが、もっとスマートな方法はありますか? http://mevius.5ch.net/test/read.cgi/tech/1245017721/8
43: デフォルトの名無しさん [sage] 2009/06/23(火) 16:00:15 ttp://www.infoq.com/jp/news/2008/03/revoerability-and-testing-oo-fp ここに 「Feathers氏に反対する人の多くは、関数型のコード乱雑になる原因は、 関数型ではないイディオムを関数型言語に持ち込んだこと以外にはないと 信じている。」 っていう記述があるけど、関数型言語のイディオム(とかデザインパターン)って どんなのがあるの?おしえてエロいひとー http://mevius.5ch.net/test/read.cgi/tech/1245017721/43
45: デフォルトの名無しさん [sage] 2009/06/23(火) 17:28:56 >>43 そうだとするとあまりに漠然としていて多少の窮屈感が欲しくなるな。 ノーパンでスカートを穿いているような、あるいは力戦になって次に なにを指せばいいのかわからない、そんな感じ。 そのうちそういうのがまとめられればいいなぁ。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/45
82: デフォルトの名無しさん [sage] 2009/06/29(月) 21:04:21 >>81 ありがとうございます。1.03にしたら "OCaml build.ml"は上手く行ったようです。 しかし 「ocamlrun.exe - コンポーネントが見つかりません ocamlrun.dll が見つからなかったため、このアプリケーションを開始できませんでした。」 となってしまいまたもや失敗。 >>73のリンク先を見るとLablGLのインストールが失敗してるというのですが インストールしなおしても同じエラーメッセージが出ます。はてさて。 OCaml本体は"ocaml-3.11.0-win-msvc.exe"をインストールしなおしました。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/82
83: デフォルトの名無しさん [sage] 2009/06/29(月) 22:06:31 Windowsだとライブラリのビルドでつまづくことが多いよね。 OcamlSDL関連のビルドで上手くいなかくてビルドを諦めた。 OCaml自体はプログラミング入門者にも比較的優しいと 思うけど環境は若干敷居が高めだと思う。 んでWindows使うのが悪いとかいわれちゃうとしょんぼりする。 そもそもLinux系を使うこと自体、本職でない人にとっては 普通ではないわけで。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/83
148: デフォルトの名無しさん [] 2009/07/25(土) 19:43:01 OCamlで (('a -> 'b) -> 'a -> 'b) -> 'a -> 'b = <fun> int -> int = <fun> で型だけを指定して変数を宣言することはできますか? http://mevius.5ch.net/test/read.cgi/tech/1245017721/148
179: デフォルトの名無しさん [sage] 2009/09/09(水) 18:09:02 多分 configure したのが間違い。 OCaml の mingw のビルドを参考にしたら? JoCaml には付いて無いけど OCaml の README.win32 に書いてある。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/179
223: デフォルトの名無しさん [sage] 2009/11/18(水) 20:22:40 5年前の俺なら老害呼ばわりしたかもしれないが、 最近はむしろ尊敬するようになってきた。 なんつーか、歳を重ねるってのはそれだけで立派だよ。 対して俺はゆとりに「この昭和生まれが」と言われてショックを受けた http://mevius.5ch.net/test/read.cgi/tech/1245017721/223
305: デフォルトの名無しさん [] 2010/06/04(金) 20:44:13 これも、一種のスタイル問題だが、 列挙型を定義するときに、 datatype X = X1 | X2 | X3 | ... とするか type X = int val X1 = 1 val X2 = 2 ... とするかで悩んでしまう。最初は、vector (ランダムアクセス)を使わない 見込みだったのだが、必要になったときのことを心配してしまう。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/305
345: デフォルトの名無しさん [] 2010/09/21(火) 22:59:45 最近SML#が活発に更新されているようなので、0.56インストールしてみました。 集合演算を使ったプログラムを書こうとしているのですが、 CM周りの問題のせいか上手く動きません。 例えば、sml#では、 # structure SSet = RedBlackSetFn(struct type ord_key = string; val compare = String.compare end); stdIn:1.18-1.94 Error: unbound functor: RedBlackSetFn となります。smlだと、 - structure SSet = RedBlackSetFn(struct type ord_key = string; val compare = String.compare end); [autoloading] [library $SMLNJ-BASIS/basis.cm is stable] [library $SMLNJ-LIB/Util/smlnj-lib.cm is stable] [autoloading done] structure SSet : ORD_SET? と上手く動いています。 どのあたりを調べれば良いかのポインタだけでも構いませんので、 解決方法ご存知の方、教えていただけますでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/345
357: デフォルトの名無しさん [sage] 2010/11/11(木) 21:49:53 >>356 MLは初心者だけど、>>305は(コードの問題ではなく)設計の問題だと思う。 代数構造として、直積(組型やレコード型)と列(リスト型や配列型)は全く別の概念。 コンパイルの前に要素の数が決定できるなら直積を使うべきだし、 実行してみないと決定できないのなら列を使う。あるいは動的なシンボルで ランダムアクセスしたいならハッシュ型を、更に順序性が必要ならB木型を。 これらすべてはプログラムの設計工程で決定しておくべきもの。 設計工程での不具合をコーディング工程で取り返そうとするのは、よくある過ち。 >>356の解決策というのは、いわゆる「泥縄」的手法。いずれ破綻する。 いくらMLが美しい言語でも、設計が汚ければコードはグチャグチャになるよ。 逆に、設計が適切であれば手続き型言語であっても美しいコードは書ける。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/357
395: デフォルトの名無しさん [sage] 2011/04/14(木) 09:44:35.08 OCamlに興味が湧いてとりあえず五十嵐某の書籍買ってみた。 で、技術書買って真っ先にやることと言えば正誤チェック。 つ・・つかえねぇ・・・この本 誤謬の嵐だぜこりゃw 量がハンパネェ 本として機能してない 残念だがゴミ箱へ http://mevius.5ch.net/test/read.cgi/tech/1245017721/395
456: デフォルトの名無しさん [sage] 2011/07/30(土) 21:28:52.08 みなさん、ありがとうございます。 OCamlスレなのにHaskell勧める人ばかりなので、OCamlに未練はあるけど、思い切ってHaskellやってみようと思います。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/456
485: デフォルトの名無しさん [sage] 2011/09/29(木) 14:23:07.44 MLの型推論の部分だけ「俺言語」の中に取り込みたい 型推論の部分だけ分かりやすくコンパクトにまとめられたコードどこかにないでしょうか http://mevius.5ch.net/test/read.cgi/tech/1245017721/485
564: デフォルトの名無しさん [sage] 2012/10/12(金) 11:22:15.18 # type t = int * t;; Error: The type abbreviation u is cyclic # type t = { x: int; y: t };; type t = { x : int; y : t; } # type u = u option;; Error: The type abbreviation u is cyclic # type u = Some of u | None;; type u = Some of u | None だれか解説してくれ。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/564
667: デフォルトの名無しさん [sage] 2013/09/13(金) 10:13:47.96 let goukei = 720;; let aa = 100 and bb = 350 and cc = 620 and dd = 705 ;; List.concat (List.map (fun a -> List.concat (List.map (fun b -> List.concat (List.map (fun c -> List.concat (List.map (fun d -> if a+b+c+d = goukei then [(a,b,c,d)] else []) [0;aa])) [0;bb])) [0;cc])) [0;dd]);; こんな感じでaa商品100円 bb商品350円 cc商品620円 dd商品705円があって 720円になる組み合わせを考えてみました ネストすればアイテム数をいくらでも増やせそうですが もっとスッキリ書く方法はありませんか? http://mevius.5ch.net/test/read.cgi/tech/1245017721/667
734: デフォルトの名無しさん [sage] 2013/10/10(木) 19:24:41.41 fib(n) = fib(n-1) + fib(n-2) fib(n-2)は呼ばれるが、計算済みだから新に計算はしないってことでしょ。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/734
835: デフォルトの名無しさん [sage] 2014/04/20(日) 03:11:50.67 ID:8gJTdsza 初学者の質問で申し訳ないのですが、 type hoge ={ t : 'a. ('a -> 'a) -> 'a -> 'a };; という型で'a.('a -> 'a)の「 . (ドット)」は何を意味するのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1245017721/835
902: デフォルトの名無しさん [sage] 2015/02/19(木) 22:31:13.58 ID:/rXoqLFu >>901 SML# という Standard ML の処理系は「ぜんぶもってる」よ # fun get_x {X = x, ...} = x; val get_x = fn : ['a#{X: 'b}, 'b. 'a -> 'b] # val point_2d = {X=1.0, Y=2.0}; val point_2d = {X = 1, Y = 2} : {X: real, Y: real} # val point_3d = {X=10.0, Y=20.0, Z=15.0}; val point_3d = {X = 10, Y = 20, Z = 15} : {X: real, Y: real, Z: real} # get_x point_2d; val it = 1 : real # get_x point_3d; val it = 10 : real Standard ML の場合、前2つは言語仕様で規定されているからすべての処理系で利用できるけど、 最後の「フィールドがファーストクラス」であることは仕様では要求されていない たとえば SML/NJ という処理系だと、上記のコードはエラーになる - fun get_x {X = x, ...} = x; stdIn:1.2-1.28 Error: unresolved flex record (can't tell what fields there are besides #X) SML# が独自に拡張したレコード型に関しては、SML# プロジェクトのホームページに 日本語の解説があるから、まず最初に読んでみるのがいいと思う ・SML#の拡張機能:レコード多相性 in プログラミング言語SML#解説 http://www.pllab.riec.tohoku.ac.jp/smlsharp/docs/2.0/ja/Ch7.xhtml http://mevius.5ch.net/test/read.cgi/tech/1245017721/902
979: デフォルトの名無しさん [sage] 2017/09/01(金) 18:43:59.45 ID:RxXe6GrD 8月はちょっと纏まった時間がとれたので、 「ソフトウェアの基礎」日本語訳の練習問題を解きすすめてみた。 まだPoly.vが終わった序盤だけどだいぶCoqに慣れてきた。 星三つrecommendedでもたまに難しい問題があるなー、というのが感想。 論理学の命題というのは高校・大学教育で慣れているだけで 見直してみると思ったよりも複雑な構造をしていたのだと今更ながらに感じた。 実務でCoqが要求されることは当分ないと思うけど、 逆変換の関数は少なからず実装することがあるので ときどき「Coq使って証明したい」という気分にはなるんだよなー。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/979
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.278s*