1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:49:54 ] 関数型言語MLについて語るスレッドです。 MLは、確固とした理論的背景を持つ言語でありながら、 現実的なソフトの開発にも使用できる実用性を備えた言語です。 また、プログラミングの初心者が最初に学習する言語としても優れています。 総本山 Standard ML www.smlnj.org/ Objective Caml caml.inria.fr/ocaml/ 前スレ 関数型言語ML(SML, OCaml, etc.), Part 4 pc11.2ch.net/test/read.cgi/tech/1133003340/
577 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 11:30:36 ] ocamlのコンソールの使いにくさは異常。 pythonならC-b, C-fでカーソルの移動ができたり、 emacsの標準的なキーが使えるから気軽にコンソールでためせる。
578 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 11:58:55 ] >>577 ledit使え、と思ったらなんか終わってるらしい。 どうしたものか...
579 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 12:01:10 ] rlwrap
580 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 12:14:31 ] inf-caml使えばいい
581 名前:577 mailto:sage [2008/10/06(月) 13:12:12 ] みなさんありがとうございます。 ためして見たところrlwrapを使うことにしました。 すごいです!!ありがとう!
582 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 21:34:32 ] >>578 >ledit使え、と思ったらなんか終わってるらしい。 え、終わってるって、どういうこと? 俺、ledit 使ってるけど
583 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 12:19:07 ] >>582 ledit終了 でぐぐるとトップに出てくるブログに書かれてる情報絡みのことじゃないかと
584 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 11:03:05 ] 3.11 のブランチ release311 が ocaml-cvs に出来ました。おそらくもうすぐリリースですね。 3.11 の目玉 * native判のモジュールの dynamic link * private abbreviation type * Printexc.print_backtrace 等、デバッグに役立ちそうな backtrace 系関数数種 * ocamlnat: native の toplevel (デフォルトでは作らないそうな)
585 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:12:17 ] >native判のモジュールの dynamic link これって既に10で出来るようになったんじゃなかったけ? と思ったら、今は dynlink.cmxa をリンクしないといけないのか これは便利だな
586 名前:デフォルトの名無しさん [2008/10/10(金) 12:01:15 ] 法政大学の児玉先生の所におかれている yk.i.hosei.ac.jp/library/hosei/seminar/caml/miniml/minicaml.sml をいまどきのSMLNJで動かすにはどう変更したらよいでしょうか. ord(#"0")はすぐわかりましたが,lookaheadなどがcharを期待してして いるのが仕様変更になったようで,elem をどうやってやればcharで 使えるのかが判然としません.
587 名前:デフォルトの名無しさん [2008/10/15(水) 09:18:45 ] OCamlの次世代デファクトスタンダードライブラリを目指すBatteriesがα1をリリースしたらしい。 dutherenverseauborddelatable.wordpress.com/2008/10/11/ocaml-batteries-included-version-alpha/ 一応前から内容は見ていて、OCamlのベースライブラリをモダンな階層構造に再編集しているのはすばらしいと思う。 ただ、ちょっと既存の外部ライブラリに頼りすぎていて、枝葉になるほど寄せ集め感が否めないのが気になる。 将来これに一本化されていくのかなー?私もこれに乗るのかどうか、今悩み中。
588 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 15:52:01 ] 過疎ってるからって hatena からそのままコピペするのはよそうよ
589 名前:osiire mailto:sage [2008/10/15(水) 19:04:27 ] 誰ですか、私のエントリーをコピペしたのは。 別にいいですけど、一人称くらい変更してくれてもいいのに。
590 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 21:49:05 ] 3.11の目玉の一つの、private abbreviation type って何でしょか? private typesでもなくprivate row typesでもない、なにか?まぎらわしー。
591 名前:デフォルトの名無しさん [2008/10/26(日) 20:54:39 ] 過疎ってるから 俺がocaml勉強日記を書いてあげようか? わからないことがあったら答えて下さいね!
592 名前:デフォルトの名無しさん [2008/10/26(日) 23:04:30 ] 断る
593 名前:デフォルトの名無しさん [2008/10/26(日) 23:12:42 ] 面白くなりそうだったらいいよ。
594 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:21:06 ] >>591 おう、かいてたらいいよ。
595 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 10:53:31 ] module M : sig type nat = private int val nat_of_int : int -> nat val int_of_nat : nat -> int end = struct type nat = int let nat_of_int n = (assert (n >= 0)); n let int_of_nat n = n end
596 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:21:06 ] >>595 レスどうも。 この例は、signatureでtype natとして隠蔽した場合と何が違うのでしょう? 試してもprinterが<abstr>になるかどうかくらいしか違い分かりませんでした。 どういう利用法があります?
597 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:53:58 ] ぐぐったらあったorz ↓ ttp://d.hatena.ne.jp/camlspotter/20081027/1225076108 subtypingとは気づかなかった。
598 名前:デフォルトの名無しさん [2008/11/01(土) 12:46:43 ] nullとnilの違いを教えてください。
599 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 13:20:42 ] null:物の表面に液や塗料をなすりつけること。 nil:食物を、水または調味料を加えた汁に入れて加熱し、食べられる状態にすること。
600 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 14:51:15 ] >>599 ttp://pc11.2ch.net/test/read.cgi/tech/1203474071/l50
601 名前:デフォルトの名無しさん [2008/11/02(日) 02:49:24 ] SMLにおいて、nullとnilの違いを教えてください。
602 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 02:53:01 ] nilは空のリスト。 nullはListストラクチャーの、リストを受け取りnilかどうかをboolで返す関数。
603 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 03:21:30 ] nullp
604 名前:デフォルトの名無しさん [2008/11/02(日) 03:35:53 ] >>599 ウケ狙いなら、残念。もう一ひねりホシイ。
605 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 07:43:26 ] ウケ狙いならって・・・ 他に何があるというのか小1時間(ry
606 名前:デフォルトの名無しさん [2008/11/04(火) 06:30:51 ] 独学でSMLの本を使いながら関数言語を学んでいるのですが、上手くできない問題があり困っています。 replicate(4); と打つと、 val it = [1,2,2,3,3,3,4,4,4,4] : int list といった感じに1を一つ,2を二つ、3を三つ、4を四つといったリストを 出力されるSMLのリカーシブメソッドを書きたいのですが、上手く行きません。分かる方教えていただけると助かります。
607 名前:デフォルトの名無しさん [2008/11/04(火) 07:09:08 ] うまくいかなかったやつを載せてみてよ。
608 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 08:14:40 ] >>606 リカーシブメソッドっていうのが何を差してるのか分からないけど、 入力: 自然数n 出力: 要素が全てnで長さnのリスト とするサブ関数使えばいいんじゃない?
609 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 08:21:09 ] n [1,2,3,...,n] [1,22,333,...,n,n,n,n,] の二行目から三行目で>>608 使えばいいな。
610 名前:デフォルトの名無しさん [2008/11/04(火) 09:16:29 ] recursive 再帰だな。
611 名前:608 mailto:sage [2008/11/04(火) 09:29:59 ] とりあえず作ってみた。 >>609 のやりかたとは違います。 ↓にあっぷしてみたので、ご参考までに。 ttp://www2.uploda.org/uporg1765562.txt.html (パスは sml です) 入力は自然数(0以上)を仮定しています。
612 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 12:47:57 ] あー、答えちゃったの?どう読んでも宿題なんだから、自分で考えさせてあげなきゃ。
613 名前:608 mailto:sage [2008/11/04(火) 18:17:23 ] >>612 やっぱそうだよねぇ。 「独学で」なんて書いてるから、 にっちもさっちも行かなくなったと思っちゃったんだよね。 やっぱ、寝ないとだめだな。
614 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 23:34:42 ] >>612 >>613 良く寝て頭を休めろ。
615 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 00:11:55 ] SMLならメソッドじゃなくてファンクションだろ、とどうでもいい突っ込み。 再帰関数はn-1番目からn番目を導出する定義をそのまま書くのがコツ。 もう>>606 は見てないだろうけど。
616 名前:デフォルトの名無しさん [2008/11/05(水) 00:43:05 ] 宿題でも独学でもどっちでもいいのでは。
617 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 00:55:48 ] xy.yu.to/ 始終荒れまくりの海外サーバ絵チャだ 一人の神プログラマーが強すぎてマクロ荒しが全く太刀打ちできてない。 荒しプログラマーは全員退散!! 誰か倒してくれwwwwww
618 名前:デフォルトの名無しさん [2008/11/05(水) 01:15:09 ] >>611 わざわざお答え頂ありがとうございます。 一応こちらもパターンマッチングでない、if - elseの方法で出来ました。ネストしたループのfunctionの前にletが抜けていただけでした。 参考になりました。
619 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 04:09:40 ] >>618 こういう課題は論理型の方がすっきりした定義になるね。
620 名前:デフォルトの名無しさん [2008/11/09(日) 12:02:17 ] すんません教えてください。 (int -> int -> int) -> int という関数の定義例が分かりません。 (int -> int) -> int -> int なら たとえば let func = fun f x -> (f 2) * x;; でいいことが分かるのですが、 (int -> int -> int) -> int だとわからなくなります。 『二つのintを引数とし、intを返す関数』を一つの引数としてとり intを返す関数というふうに理解してます。 コードはどのように考えればよいんでしょうか?
621 名前:デフォルトの名無しさん [2008/11/09(日) 12:48:12 ] なんでもいいけど let func f = (f 1 2) + 3;;
622 名前:デフォルトの名無しさん [2008/11/09(日) 14:05:34 ] >>621 ありがとうございます。 理解しました。
623 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 03:10:20 ] ふと気づいたらOCaml3.11.0キテター
624 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:16:58 ] おお。 Mozartの64bit版も来ないかなぁ・・・クリスマスプレゼントに
625 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 13:35:35 ] mac leopardにsmlインストールしようと長いこと奮闘しているのですが、どうにも上手くいきません。 どなたか導入に関してわかりやすいサイトありましたら、教えてください。
626 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 16:39:09 ] Macports使えよ
627 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:31:58 ] >626 やっと入れられた。ありがとう。
628 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:34:37 ] >>625 なんだ、お前も最近増えてきたにわかマカか
629 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 13:04:14 ] >>628 人生にお疲れのようですね。
630 名前:デフォルトの名無しさん [2009/01/01(木) 23:05:22 ] 引く手あまたのプログラミング言語は? slashdot.jp/developers/article.pl?sid=08/04/06/2313251 --- Java(16479件)、C++(8080件)、C#(7780件)、JavaScript(6749件)、 Perl(5710件)、PHP(2641件)、Python(1408件)、COBOL(1207件)、 Ruby(769件)、Lisp(33件)といった感じらしい。 とりあえずJavaとC/C++/C#、あとJavaScriptを覚えれば、 当分仕事には困らないようである。COBOLのしぶとさも目立つ。 ちなみにHaskellやOCamlの求人は10以下だったそうだ。 ---
631 名前:デフォルトの名無しさん [2009/01/03(土) 03:15:13 ] 当然だ。HaskellやOcamlの素晴らしさを理解できる人種は 限られているからな。JavaやC++みたいな糞言語を使う糞グ ラマがいる限り日本のIT産業の生産性は低いままだろう。 今必要とされているのは我々のような高い能力をもつエンジ ニアであるにも関わらずスーツ族にはそりがわからんのですよ。 うはwテラガンダムwww俺自重www こうですかわかりません
632 名前:デフォルトの名無しさん [2009/01/03(土) 05:18:13 ] パラダイムシフトはある日突然のように起こる
633 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:20:18 ] >>631 職業プログラマは免許制にすればいいんじゃね?
634 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:43:11 ] >>633 情報処理技術者試験の実務への役立ち度を考えると・・・
635 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 12:03:45 ] プログラマの能力なんて知ってる知らないでは計れない。圧倒的多数の凡グラマーとごく一部の神グラマーww
636 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:21:35 ] >>634 試験は基本中の基本の事柄が出てくるだけだよ。 実務には直接関係ないかもしれないが、その程度のことも知らないようでは 応用性がなくて35歳で定年を迎えるだけ。 ソフトウェア開発を一生仕事にできるのは基本を知っている人間だけだよ。
637 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:42:15 ] >>636 へえー
638 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:58:45 ] ソフ開で午後八割くらい午前四割くらいのおれは生きててはだめということですね。わかります
639 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:58:29 ] >>633 盲目的に試験勉強する人間はもううんざりだな。
640 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 18:06:33 ] >>639 たとえばプログラマでも東大院卒と公立高校卒とでは、やはり東大卒のほうが優秀な奴が多いよ。
641 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 18:59:38 ] そりゃそうだ スタートは同じでも高卒と大卒では行き着く先が違う
642 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 19:50:26 ] で、高卒は35歳で定年退職です
643 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 07:25:19 ] >>642 私のように35才でPrologを始めて、それでプログラマになれたというケースは どう考えればいいのかな。大学一年で中退してるから、高卒だけど。
644 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 08:44:37 ] 年齢といい、言語といいそれなりにレアケースかと。 まぁ35ではじめてもいけるとは思うけどね。多分それまでに理論的な思考が身についてないときついと思うが。
645 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 09:20:24 ] 論理型とか関数型を裏にある数学的な背景も併わせて押えとけば 手続き型でやるより長生きできるのかなーとか思ったり
646 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 10:09:45 ] PrologとMLがそんなに差があるわけもないのであって、 40才から始めても大丈夫って言わなくちゃいけないのではないか。 関数型のスレで高卒限定でも35才定年はないと思うよ。
647 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:15:36 ] >>643 辞めた理由による。 高卒と大学中退は若干違う。
648 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 18:35:36 ] 35歳でプログラミング始めるのは全然無理ではないし、 業界未経験でPrologのみ扱える35歳が職業プログラマとして入り込めるのも、この業界w かつての業界成長期にはタクシー運転手や大工から転職してきた人も珍しくなかった。
649 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 18:57:38 ] >>648 それはIT土方。アメリカ的に言えばコーダー。 ちゃんと計算機科学を勉強した人間の仕事じゃない。
650 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 20:22:11 ] >>648 今だって、エリクソンかなんかでErlangばかりやってて、日本に帰ってきて、 この言語だけは精通していますと言ったら、就職困らないでしょ。希少価値が あれば、なんとかなるのは今も同じ。
651 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:34:51 ] >>650 困る困る大いに困る
652 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:46:50 ] >>651 変だな。Erlangもそうだが、Scalaなんて、書けるって言ったら、 引く手数多だろう。
653 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:54:09 ] 俺なんかErlangもHaskellもScalaもFortranもCobolもJavaも一通り何らかのプロジェクトで携わったことがあるけどニートだよ?
654 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:58:09 ] C PHP Ruby もやったな。 ほとんどオープンソースプロジェクトと大学のTAやってたころに問題作成・採点やってたころの経験だな
655 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:02:16 ] とある大学の研究のために作られたハードウェアを制御するデバドラとかも書いたことあるし、 技術は結構あると思うんだけど 人格障害&口下手だから誰も俺なんか雇わないんです。
656 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:34:27 ] >>652 需要はあるところにはあるんだろうがどこにでもあるわけじゃない。 需要のあるところと縁がなければ(ほとんどないわけだが)どうにもならん。
657 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:46:14 ] >>656 クリーク・アンド・リバーのような所はプログラマは対象に していなのかな。アーティスト主体とは聞いたが。
658 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:52:59 ] >>657 秘密裡に話を進めたい求人っていうのは確かにあるね。
659 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 23:06:09 ] >>649 スレの流れを読め。 計算機科学を勉強した人間を前提とした話じゃないだろ。
660 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 23:25:33 ] >>657 その会社ググってみたが、HP何ともセンスねぇな・・・
661 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 05:14:07 ] Erlangにしても、Scala、ML、どれもヘッドハンティングの対象になる 案件ではないかな。ところで話は変わるが、高齢者向きの関数型言語 というと何になるのかな。Windowsアプリを書きたいなんて言わない 人達。
662 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 09:00:13 ] 1977年に論文発表のFPでいいと思うよ
663 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 09:12:48 ] 検索すれば、60歳からhaskellを始めたって人の日記とか見つかるよ
664 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 12:05:06 ] >>659 IT土方というのは専門性を持たずに手を動かすのが仕事の作業員のことで、 呼び名こそプログラマでも、専門知識を携えたプログラマとは大きく異なる。 土掘りしようがレンチ握ろうがキーボード叩こうが一緒の連中。 主に派遣。
665 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 12:50:14 ] >>664 「頭寒足熱腹八分」。翻訳すると「気取らず、怠けず、欲張らず」くらいになるかな。 1970年代以降の社会では専門知識は現場で帰納的に身につけるもの。仮に前身が、 タクシー運転手であろうと、大工であろうと、あるいは雲助であってもね。
666 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 12:54:21 ] 頭破七部
667 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 15:50:42 ] ML言語で書かれた数式処理ソフトってあるのでしょうか? 今はmaximaをcommon lispから使ってるのですが maximaよりも機能が豊富だったりするのでしょうか?
668 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 16:22:17 ] maximaに勝てるフリーのものなんてないよ
669 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:44:34 ] >>665 それは好景気の浮かれた古い時代、どんどん経営拡大して人材が追いつかなかった時代の話。 現代は人材にもっとシビアになってきている。 それに〜1995年ごろまではソフトウェア的にはそれほど目覚しい進歩がなかったから、 覚えた知識や技術の劣化が遅かったから専門基礎教育を受けない現場叩き上げだけでも何とかやっていけた。 ところが1995〜1999年ごろに爆発的に情報技術が進歩しはじめ、 それまで現場でソフトウェア開発に携わってきた"叩き上げプログラマ"は新技術についていけずに、 プログラマ35歳定年説の元になったわけだ。 現在の大学の情報学科や情報工学科などはそういった経験を元にして教育カリキュラムを組んでいるわけだよ。
670 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:55:04 ] >>669 もっともらしい大嘘乙 プログラマ35歳定年説ってもっと前からあったろうに。
671 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:04:39 ] CSで学んだようなことが生きるようなタイプの「開発現場」って日本にあんの? 日本のSIとかがやってるのは、今でも右から左にデータを動かすだけの ユーザプログラミングの代行であり、コンサル業務でしょ 上流にいる奴は業務知識や営業力、調整力が重要で 下流にいる奴は、SQLだの5年も経てば古びるようなフレームワークだの 製品だのの泡沫知識、アジャイルだのデザパタだのについていける程度の オツムを持っていることだけが重要で、 そこには本物のCSなど影も形も無いように思えるよ
672 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:11:34 ] >>671 あるよw それがなかったら日本のIT沈没w
673 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:14:11 ] >>672 それって研究所系でなくて? 不景気だと、すぐゼニカネにつながらないところは切られがちだよね? ゲーム屋は、まだSIよりはまともに「開発」だろうとは思うが
674 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:56:13 ] SIだってソフトウェア工学とかを無視して仕事はできん。 無視して沈没した例もあるし。
675 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:45:20 ] ソフトウェア工学なんて学問じゃないだろ。 残念だけど、その道の人からは下に見られてるよ。
676 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 20:12:15 ] ふざけんな。計算機科学の立派な一分野です。
677 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 20:19:30 ] ソフトウェア工学なんて俗学だよ。 数学やらないようなものは科学じゃないよ。