[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 00:21 / Filesize : 224 KB / Number-of Response : 956
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型言語ML(SML, OCaml, etc.), Part 5



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/

708 名前:osiire mailto:sage [2009/01/10(土) 11:28:38 ]
>>703
具体的な金額までは答えられませんが、OCamlマスターなら即戦力として迎えたいと思います。
>>704
ビジネス的には色々と理由があるのですが、どれも後付けです。
要するに、型安全や代数的データ型やパターンマッチや高階関数といった特徴ゆえに、開発効率がよくて不具合が少なくなるからです。
特にOCamlはライブラリが揃っていて楽です。それ以上でもそれ以下でもないです。

709 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 11:44:02 ]
海外の求人にはOCamlは結構あるらしいけれど、国内にもあるというのは
朗報だ。

710 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 11:51:33 ]
>>708
F#じゃあかん?

711 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:55:57 ]
>>708
所謂ベンチャーですか?

712 名前:osiire mailto:sage [2009/01/10(土) 16:15:46 ]
>>710
F#で具体的な案件をこなした事はまだありません。だた、今後VisualStudioに標準搭載されてくれば、案件によってはF#を選択するかもしれません。
>>711
うちも小さい会社なのでよくベンチャーと言われるのですが、実質的にはベンチャーではなくスモールビジネスです。

713 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:11:57 ]
>>690
OCAMLコミュニティで知名度のある社員はいますか?

714 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:15:05 ]
>>713
それ重要だな

715 名前:osiire mailto:sage [2009/01/11(日) 01:13:37 ]
>>713 知名度は計りかねますが、「入門OCaml」という本を執筆した著者が在籍しています。また、OCaml.JPというサイトの運営に係わっていたり、ocaml-nagoyaという勉強会を開いたりしています。 ,ocaml.jp/ ,www.itpl.co.jp/ocaml-nagoya/

716 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:27:39 ]
>>715
その本良くなかったわ。
プログラミング in OCamlは良かった。



717 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 12:25:30 ]
>>715
店頭で見たけど、五十嵐淳さんの授業ページと本家ドキュメントだけで十分だと思ったから買わなかった。
言語解説書なんて今日日はやらないと思うなぁ。

718 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 12:30:28 ]
Haskellの時だって言語解説書ほしがってわめいていたのって少数派だったんじゃねーの?
Haskell覚えようとするような奴が英語読めないとも思えないし、英語読めるなら本家ドキュメントぐらい読めるだろうし。
読んで理解できないような難しい文書でもないしな。

719 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:08:34 ]
まとまったいい本あれば英語だろうが日本語だろうが買いますが

720 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 14:41:19 ]
>>718
英語読めないけどHaskell覚えようとするような奴ですが何か?w

721 名前:osiire mailto:sage [2009/01/11(日) 15:04:05 ]
私の力不足にしてお役に立てなかったのは申し訳なく思います。
ただ、とにかく私はMLのようなすばらしい言語をもっと開発現場に普及させていきたいのです。
書籍の発行はそのための具体的な行動の一つです。


722 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:07:03 ]
>>720
Haskell本出せっていう要求は5〜6年ぐらい前の話。

723 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:15:33 ]
>>722
言語解説書も出版されないような言語は消え去る他ないだろう。
そういう意味でOCamlはクリアできてるんだから結構ではないか。

724 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:19:10 ]
>>723
OCamlにも不満はあるんだけどねぇ。
かといって言語を作る気はない。作った時点で満足して宣伝する気まで起こりそうにないから。

725 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:29:46 ]
LISP本は百冊以上。Prolog本も五十冊以上。
OCamlもHaskellも一般人にとっては決定的に情報不足。

726 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:33:44 ]
英語も分からないような人はプログラミングなんかしなくていいよ



727 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:37:26 ]
なんか変な人がいるなwwww欲求不満なのかww?

728 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:43:44 ]
OCamlはなー、もう少しメタプログラミング能力があればいいんだが・・・

729 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:47:35 ]
よくしらんけどocamlp4とかでやるんじゃないの

730 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:48:50 ]
ocamlp4じゃねえや
camlp4だった

731 名前:デフォルトの名無しさん [2009/01/11(日) 18:36:02 ]
なんでここ急に盛り上がってんの

732 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 18:50:19 ]
>>726
ゴメンなさいね
英語わからんけど飯の種なんでやめられないですw

733 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:31:10 ]
>>732
お前みたいな質の低いプログラマがいるからこの業界なめられるんだよ。
分かったら土堀りでもやってろ。

734 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:34:51 ]
>>733
「五十嵐淳さんの授業ページと本家ドキュメントだけで十分」なんていう人が
いるから関数型がなめられるんでしょ。

735 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:37:18 ]
>>708
素朴な疑問だけど、Lisp系のマクロのような機能が無いOcamlじゃ
作成時間と共に開発効率が上がるようには思えないけど・・・
ある程度の腕があればライブラリーなんて持ってると思うし、
Gaucheとかと競合したら負けそうな希ガス…

736 名前:733 mailto:sage [2009/01/11(日) 19:51:19 ]
>>734
俺じゃねーしw
てか、入門Ocamlだっけ?あの程度の言語解説書ならいらねーよ。
俺が関数型言語を使うようになったのはMLを大学の授業で知ったのがきっかけだが、
別に参考書なんて一冊も買ってないぞ。立ち読みはするが。
初心者向きの言語解説書にはもはや価値がない。
ネット情報だけで十分なんだよね。

>>735
マクロがそんなに重要な機能には思えない。
大して作業効率にも反映されない。
Lisp系なら価値があるかもしれないが、ML系にはさほど意味はないだろうな。



737 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:59:24 ]
>>736
そうか、別人か。そんな気もした。それはともかく、
君はそれで学べたかも知れないが、それでは普及は
しないということ。

738 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:00:18 ]
>大して作業効率にも反映されない。

オマエがマクロを知らないのは分かったから黙ってろw

739 名前:733 mailto:sage [2009/01/11(日) 20:07:21 ]
>>737
ゴミ本いくら増やしても普及はしないと思うね。
優れた海外の本の翻訳なら価値があると思うがね。
だからプログラマには英語が必須なわけだけど。

740 名前:733 mailto:sage [2009/01/11(日) 20:10:31 ]
>>738
ここで書いても仕方ないが、俺はとあるSchemeライブラリ作者だ。
Lisp系にある程度精通している。

MLでマクロを実装してもあまり価値はないよ。

741 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:10:52 ]
MLに普及の目なんて無いだろ
つーか、普及してほしいの?
MLが普及するぐらいならとっくにLispが世界を制覇してるよ

742 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:14:19 ]
あえて関数型言語を比較するなら
Haskell > SML > Scheme > Common Lisp

743 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:15:31 ]
>>740
底の浅い知ったかだねw
マクロで開発効率を上げるといえばライブラリなんか関係ないんだよ。

744 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:21:24 ]
マクロ使うとコードが煩雑になるじゃん
Haskellのポイントフリースタイルならそもそもマクロは必要ないと思えると思うんだがね

745 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:22:10 ]
>>741
Haskellなんかが評価されてるのって
参照透明だからマルチコア当り前の時代のプログラミングに向いてるっていうか、
Lispとは勝負所が違う気がする

746 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:27:24 ]
>>745
勝負どころの振り分けはどのように?



747 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:27:45 ]
>>745
え?俺にレス?
そういう方向でも、やはりMLに目は無いよね
素直にErlang使っとけって話になるじゃん

748 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:32:01 ]
Erlangはサーバ専用だと思ったほうがいい。
Erlangでプログラミングしてて分かったわ。

749 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:32:58 ]
>マクロ使うとコードが煩雑になるじゃん

タコ!マクロ生成マクロに煩雑もクソもあるかw

750 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:41:24 ]
クライアントはWindowsとC++のゲットーだったりするので
鯖で強いErlangは勝ち組

751 名前:デフォルトの名無しさん [2009/01/11(日) 20:41:33 ]
>>733

752 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:44:24 ]
マクロ生成マクロは黒魔術じゃねw
使うけど。

それはさておき、まぁLispのマクロそのものということじゃなくて、
それ相当のものがあるかってことでしょ。

たとえばRubyは、eval とかその他動的な機能でALGOL系の
言語での 「マクロ相当」 を導入しようという試みだと思うけど
(それがどれくらい成功といえるかは意見が分かれるとして)

Ocamlとかはそれ相当の機能や試みとしてはなにがあるの?
camlp4を知らないで書いてるけど。

753 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:45:57 ]
camlp4でHaskel風のList comprehensionとかは出来る
っつーか、デフォでそういうオモチャがついてる

754 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:48:28 ]
>>753
オモチャっていうのは、実用に堪えないっていうニュアンス?

755 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:49:29 ]
>>754
いや、オマケ&デモって意味
本気で使わせたいんなら、最初からそれを言語仕様にするか
トップレベルに組み込むんじゃね?

まあ、単に俺がそう思っただけで、詳しいことは白根

756 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:59:17 ]
>>742
Scheme > Common Lisp > Haskell > SML/OCaml



757 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:37:10 ]
おまえらのいう「開発効率」って所詮個人の趣味プログラムでの話だろ?
>>690のように仕事で使う上での「開発効率」を考えたことある?

758 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:47:05 ]
>>757
ゲームやGUIアプリの類に関数型は正気とは思えんし
ドカタ仕事の類にも向いてねえだろ
ド汚くてもいいから仕事を簡単にやっつけられるってのが「開発効率」じゃねえの?

759 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:02:41 ]
LispのマクロはS式があって始めて便利なもの。
だから他の言語にはない。

760 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:12:55 ]
つ Dylan

761 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:41:18 ]
>>757-758
 >>735

>>760
Dylanはscheme/Lispとの差別化が出来なかったんだよね。むしろ劣化版。
最終的にObj-Cでいいやってことになって中止になったし。

762 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:41:42 ]
>>733
むしろ、あなたのような人が人間の質として低い気がしますが?

英語ができた方がいいとは思いますが、必須とは思いませんね。

763 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:48:25 ]
>>758
ところがどっこい、Unreal Engineの開発者がHaskellに注目してたりするんだ。
確か国内のゲーム開発者が、関数型に注目してるという記事も以前見かけた。
正気じゃないと言うほどでもないと思うけど。

それと、汚い仕事をやっつけ、って、割と関数型のフィールドじゃない?
関数こねくり回すのが本領の訳だしさ。

764 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:52:03 ]
MONADIUSみてHaskellに対する印象が変わったな

765 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:16:12 ]
>>762
英語必須ですよ。
英語ドキュメント避けて日本語ドキュメント探しているうちに日が暮れるような非効率な奴は3流

766 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 07:49:20 ]
安定した仕様の言語だと、プログラマがドキュメントを探す
ことは稀だと思いますよ。通信規格のようなものは参照しま
すが。



767 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 08:49:25 ]
洋書も持ってるけど、どうしても意味が汲み取れない
ところとかあると挫折しそうになる。

768 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 08:54:54 ]
英語読めない奴の為に翻訳までしないと一流とは言えないな

769 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 08:59:00 ]
300ページくらいで文章とコードが半々くらいだと何とかいけるんだが、
700ページとか厳しい。

770 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 08:59:14 ]
じゃぁ二流でいいです。

771 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 09:41:39 ]
>>761
>>>757-758
> >>735

お前は何が言いたいのだ?

772 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:09:39 ]
>>766
documentって英単語は書き物全般を指すと思うんだが?w
最新の論文はもちろんのこと、RFCの一部なども日本語に訳されていないこともあるから、
やっぱり英語ができなきゃ支障がでるね。
特にアルゴリズムの論文は読むことも多いんじゃないかな。

773 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:18:14 ]
>>772
私もあなたも同じだと思うけど、このム板に書き込んでいるような
奇人プログラマでないかぎり英文のドキュメントなんて読まないと
いうことです。研究者は別ですよ。

774 名前:772 mailto:sage [2009/01/12(月) 12:22:02 ]
俺は職業プログラマではない。
どっちかっつーと天文台に住んでる実験系の物理屋だ。
プログラミングもするからプログラマで通してる。

775 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:29:37 ]
つまんね

776 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:29:41 ]
少し前に英文ドキュメントも読まないようなプログラマは3流だ、
という主旨の書き込みがありました。しかし、英文情報を渉猟して
いる方が珍しいのであって、当然そんなことをしていない人の中に
一流の人はいっぱいいると確信できるので、ちょっと反撥してみま
した。



777 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:32:13 ]
>>776
一流なら当然名前は売れてるんだろ?
例を挙げてくれよ。

778 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:33:29 ]
>>776
英文を読めない人間は、プログラマとしては情報弱者であることが
確定したようなものだ
そんな「一流のプログラマ」などあり得ないと俺なら確信できるが

英論文を読めない研究者などあり得ないのと同じだと考えてよい

779 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:02:04 ]
>>776
日本発の情報がウンコなので英文を読むほかないのです。

780 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:04:30 ]
並川さんもよくTVに向かって英語できません、なんて言えるよな。
昔と今じゃ状況が違うんだよ、馬鹿
ノーベル賞剥奪しちまえよ

781 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:25:37 ]
一流のプログラマになれるような頭の良さを持ちつつ英語わからないやつっていないんじゃない?

782 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:27:31 ]
言語マニアのファインマン先生は日本語を覚えようとして挫折した過去がある

783 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:27:53 ]
実際に読めるかどうかは別として、少なくとも
「英語が読めなくても大丈夫」と主張するやつは駄目だな。

784 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:30:28 ]
>>781
中学以来英語教育を受けてる筈なんだしね
まあネイティブ同然に読めなくてもそれは仕方が無いが
誰もそこまでは言ってない

785 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:33:47 ]
>>782
何がだめだったんだろ。
言語体系の違いか?

786 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:36:45 ]
>>785
日本語をファインマンに教えていたのが朝永の研究室の連中だったんだよね。
日本語の教え方がへたくそだったんじゃないかな。
それで、ファインマンもうんざりして日本語習得あきらめたんじゃないかと思うね。



787 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:41:14 ]
そろそろ関数型言語の話をしようぜ

788 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:51:09 ]
>>786
この馬鹿が。
日本語は世界でも最も難しい言語の一つなんだよ。
英語みたいに単純明解ではないのだよ。

789 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:00:26 ]
英語:主語+述語を主体とした前置型(Lispチック)
日本語:述語を中心とした後置型(Forthチック)
だとオモ。と無理矢理スレに繋げてみる。

790 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:04:48 ]
>>780
並川じゃなくて益川
漢字も読めないようじゃ現場では使えないな

791 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:57:09 ]
>>788
俗説

792 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:59:53 ]
しかし日本語を体系化できた人間は未だにいない。

793 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:03:06 ]
朝永の弟子がファインマンに日本語を教えたときも、そういうもんなんだよ、という説明しかできなかった。
日本語が英語に比べて体系化しにくい複雑な言語だということなんだよね。
英語が世界中で愛用されて、日本語が日本国内でしか使われない理由が良く分かるよ。
やっぱ言語はシンプルじゃないと駄目ってことだ。

Scheme最強!!

794 名前:720 mailto:sage [2009/01/12(月) 15:24:53 ]
>>718 Haskell覚えようとするような奴が英語読めないとも思えないし
>>720 英語読めないけどHaskell覚えようとするような奴ですが何か?w
>>726 英語も分からないような人はプログラミングなんかしなくていいよ
>>732 英語わからんけど飯の種なんでやめられないですw
>>733 お前みたいな質の低いプログラマがいるからこの業界なめられるんだよ。
>>762 英語ができた方がいいとは思いますが、必須とは思いませんね
>>765 日本語ドキュメント探しているうちに日が暮れるような非効率な奴は3流

つまり、
1.英語読めない奴は3流である
2.3流の奴はプログラミングしなくていい
3.プログラミングを仕事にしてるなら転職しろ

って、こってすね?
1.はともかくとして2.と3.には同意しかねますね。

>>787
スレチ失礼しました。
私はこのレスで終了とします。


795 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:31:37 ]
低品質ソフト垂れ流しやがって ゆるせん

796 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:59:16 ]
まあ英語読めんでも仕事になってるんならそれでいいんじゃないの?

manだのinfoだのMSDNだのコンパイラの吐くメッセージだのを
「英文なので自分には読めません」で仕事になるのか分からないが
それで済んでいるのならある意味幸運なことだ
俺には関係ないしな



797 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 16:23:47 ]
>>792
どんな自然言語もそう。
完全に体系付けできる言語は人工言語だけ。

798 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 16:55:04 ]
Javascriptなんて、方言やバージョン違いだらけで、
「Javascript大系」出すのは不可能。


799 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 17:24:34 ]
"体系化しにくい"とは"規則化しにくい"と考えればよいのか。
つまり例外が多すぎる、と。

800 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 19:14:29 ]
で、英語を読めないやつは三流だっていうことを必死で主張してた人は結局何がしたかったの?

801 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 19:17:42 ]
スレチの話題はそろそろ終了してくれ。続けるならマ板にでも逝け。

802 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 23:56:12 ]
Ocamlも色々盛り込みすぎて,体系化されてるとは見えにくくなっている.

803 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 00:01:31 ]
Camlp4で頑張ればUnicodeリテラルとか
[1..10]みたいな記法を使えるようになるんでしょうか

804 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 00:46:07 ]
てか、オブジェクティブな要素はいらないだろ。
流行に流されてるなぁ

805 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 00:53:19 ]
>>804
lablgtkとかはいいんだけど、自分で使う分にはいらないよね、オブジェクト指向要素。
でもそこを否定すると"O"Camlじゃなくなるww

806 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:10:01 ]
前から疑問だったんだけど、オブジェクティブじゃない素のcamlってのは
発展してるの?というか、継続的に開発されているの?



807 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 02:29:32 ]
バリバリのOCaml使いって、関数型だとかそういうの拘らないで、
副作用使いまくり、オブジェクト指向使いまくりで
関数型の要素もある手続き型言語ですみたいな感じで書いてたりするんだろうなあ。。。

808 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 03:58:12 ]
>>807
なんか偏見?そりゃHaskellよりはゆるいかもしれないけど。
バリバリのOCaml使いが作ったと思われるJane Street Capitalのcoreライブラリとか読んでもそんな感じはしないよ。


809 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 04:00:47 ]
>>807
バリバリのC使いがにわかOCaml使いになってプログラムしたんだろ。

810 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 07:01:13 ]
>>808
mldonkeyとか読んだ。でもあんま沢山のアプリを読んでないのですまん。

811 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 09:07:42 ]
OCamlはフランスで作られているのだからフランス語をやるべきだ。
wikipediaひとつみてもフランス語が断然情報量が多いね。
フランス語
fr.wikipedia.org/wiki/Objective_Caml
日本語
ja.wikipedia.org/wiki/Ocaml
英語
en.wikipedia.org/wiki/Objective_Caml


812 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 09:39:21 ]
オブジェクトはOcamlの鬼子
d.hatena.ne.jp/camlspotter/20080906/1220723583
d.hatena.ne.jp/camlspotter/20080908/1220846961

813 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 10:25:50 ]
lispわかってる人がOCamlマスターするのにかかる時間ってどのぐらい?
3日じゃ無理?

814 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 12:24:20 ]
>>813
3時間ぐらい

815 名前:デフォルトの名無しさん [2009/01/13(火) 18:09:27 ]
↑↑馬鹿だろ

816 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 18:17:27 ]
>>813
lispマスターがOCamlわかるのには大体3週間ぐらい。(これはマジレス)
lispわかってる人がOCamlマスターできないと悟るのが3分くらい。




817 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 20:38:13 ]
初Ocaml

階乗計算を2通りやってみた。
codepad.org/5vBjk9Cm

どっちの書き方の方が多い?

818 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:00:36 ]
let rec fac=function
| 0 -> 1
| x -> x*fac(x-1);;
はどうよ?

819 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:13:25 ]
>>818
同意。

820 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:16:50 ]
>>817, >>818
3通り
codepad.org/5bAL8aRu

821 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:54:19 ]
型の例
codepad.org/UGqmVJcb

822 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 22:01:22 ]
凄く細かいことだけど、自分は OCaml なら fact (n + 1) と必ず空白を入れるかな。
C や Java だと、その括弧は関数の引数を括るための特別な記号だけど、
OCaml だとそういう意味はなく、単に演算の優先順位を示す普通の括弧だから
2 * (3 + 4) の括弧に空白を入れるのと同じ理由で fact の後の括弧にも空白を入れる。


823 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 23:08:59 ]
>>822の言うように修正したコード
codepad.org/i8vprhP5

824 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 23:20:24 ]
let fact n = fold_left ( * ) 1 [2..n]
とか書けたらいいのにと思いますた
遅延計算で

825 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 23:23:22 ]
>>823を相互再帰にする。3つの関数のどこから計算しても同じ。
codepad.org/x8n2Lk8r

826 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 23:51:52 ]
Yコンビネータを2種類追加して全部で5通りになった。
codepad.org/oGJ4Mwzh



827 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 23:53:36 ]
>>825
相互再帰を入れれば全部で6通り。


828 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 00:24:56 ]
>>824
Haskellならできるね
fact n = foldl1 ( * ) [1..n]

829 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 00:35:06 ]
PythonもHaskellよりはダサいですが一応出来ます
from operator import mul
fact = lambda n: reduce(mul, xrange(1, n+1))

830 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:24:18 ]
末尾再帰バージョン
codepad.org/vE2CJfG0

831 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:08:54 ]
マージソートを作ってみた。リストの表示に良い方法ってあるの?
codepad.org/VJydA6mc

832 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:16:02 ]
>>826
それ>>164まんまw

833 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:16:18 ]
extlibのStd.printが汎用プリンタっぽいですね

834 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:32:39 ]
>>833
ありがとう。どうやらcodepadでは
#use "topfind";;
#require "extLib";;
が使えないみたい。

835 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 19:43:52 ]
簡単なオブジェクトの例
codepad.org/v0ANkxs1

(* helloオブジェクトのメソッドprintを呼び出す。 *)

hello#print ;;


836 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 19:58:40 ]
>>835の例をもう少しちゃんと書くと
codepad.org/kJsrhxd6

let hello = new c_hello ;;



837 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 20:30:48 ]
>>836のクラスを継承する。
codepad.org/Q1xMkrvt

838 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 19:01:06 ]
リストの操作の練習など
codepad.org/Ggh5Z9mp

839 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 05:42:37 ]
和集合は
else

840 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 05:44:24 ]
間違えて途中書き込みしてしまった

和集合は
else h :: union t b
よりも
else union t (h::b)
のがいいんじゃね?

841 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 16:43:36 ]
>>840
いいわけないだろ。
hが加わった分だけ再帰に余計な計算が加わって遅くなる。
ばか?

842 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 16:48:47 ]
計算量多くなるけど、入力に同じのが入ってたときを考えたんだが。
入力が正しくないときなんて考えるだけ無駄か。

843 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 17:20:19 ]
俺も>>840と同じように思いました
>>840方式なら、計算ステップ数は同じで、末尾再帰になりませんか?

>>838のコードは末尾再帰になっていない分効率が悪いですよね

844 名前:843 mailto:sage [2009/01/24(土) 17:21:39 ]
ああそうか
再帰のステップ数は変わらないけど、memberpの計算量が増えていくのですね
理解しました


845 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:43:51 ]
>末尾再帰になっていない分効率が悪いですよね
codepad.org/NLLYr3fJ
codepad.org/KnzRmJjp

よくそんな嘘を平気で言えたもんだw

846 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 13:14:19 ]
OCamlを使っている皆さんのプログラミング環境やプログラミングスタイルって
どういうものなのか教えていただけませんか?



847 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 09:08:33 ]
環境やスタイルっつーてもねー、もうちょっと質問を明確にできない?
linux, gcc, ocaml3.11, OMake/Makefile, emacs, tuareg1.46.2,
80chars/line, indent 2chars
とか、そういうこと知りたいの?


848 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:06:07 ]
ドテラ着てコタツに入ってみかん食いながらプログラミングするのが今時のスタイル。

849 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:25:20 ]
BT別/トイレ有/風呂有/シャワー/室内洗置/給湯/ガスコンロ対応/
システムキッチン/エアコン/冷房/暖房/BSアンテナ/CATV/エレベータ/
オートロック/収納/フローリング/分譲賃貸/駐輪場/ガス2口/浴室乾燥機/
シャワー付トイレ/バルコニー/外壁タイル/クロゼット/宅配ロッカ/CS/照明/
インターネット接続可

850 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:34:40 ]
FONに追加したSDカード上のLinux環境(Open-WRT)に
ログオンしてemacs起動してサーバーサイドを作成してる。

851 名前:sage mailto:sage [2009/02/07(土) 08:21:54 ]
自分はEmacs + ocaml-mode。
多くの人は同じじゃね?

852 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 13:00:09 ]
>>847
・コンパイラに○○、
・デバッグのために○○と○○、
・エディタには○○、
・IDEを使う場合は○○、
・開発用と検証用のPCを分けたり、
・開発用・検証用PC間のデータ共有にLANを使ったり、
・通信にRS232Cを使ったり、
・コンパイルするまえに検証したりするかどうかとか、
・バグが見つかったときの対処方法など、
ですね。
ほかにも必要な要素があればぜひ付け加えてください。

どういうプログラムを作るかにも因るかもしれませんが、
要するにどういう種類のプログラムを作るときどういう手順を踏んでいるのか、
ということを教えていただければ幸いです。

853 名前:852 mailto:sage [2009/02/07(土) 13:03:48 ]
追加ですが、
ソースコード管理や配布などについても教えていただければ幸いです。

854 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:34:01 ]
>>851 tuareg-modeは楽しいよ

855 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 07:22:46 ]
コンパイラはocaml3.11+ocamlspotter patch.
デバッグは主にextlibのdumpで画面表示. 超絶困ったときにはocamldebug.
エディタはemacs. IDEはいまのところ使ってない.
全体をコンパイルする前に大きく編集したファイルは-iオプションで個別に型をチェック.
-annotオプションは殆ど常に付けていて、謎な動きで困ったときには型とかも参考にしながら動作を追う.
上で抑えられているはずの(match文とかの)ありえない遷移にはassertとかも付けている. ヒットしたことないが.

856 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 10:52:48 ]
>>855 と殆ど同じ

> ・開発用と検証用のPCを分けたり、
> ・開発用・検証用PC間のデータ共有にLANを使ったり、
> ・通信にRS232Cを使ったり、

これは OCaml と何の関係もないと思うが。必要な人はそうするだけの話でしょう。

> ・コンパイルするまえに検証したりするかどうかとか、

質問の意図がよくわかりません。
コンパイラに通す、という事以上に意味のある検証を、
コンパイラに通す前にできるとは思えませんが。

通した後にモデルチェッカとか定理証明器でさらに検証する、
というのなら判りますが、実際やっている所を聞いたことがありません。
あれば是非話を伺いたいです。

> ・バグが見つかったときの対処方法など、

printf debug は馬鹿にできない。
assert して backtrace とかかな?
最悪 ocamldebug。gdb は意外といける。




857 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 11:37:12 ]
>>852
>>853

質問の対象が広すぎて良い答が得られるとは思えません。

- なぜこういう質問をしたくなったのか (会社で OCaml を導入しようとしているとか)、
- 現在こういう手順で他言語で開発を行っている、OCaml を使っても同じようにできるか知りたい

とか、背景説明していただかないと、答える側としても的を得た答を出しにくいです。


858 名前:852 mailto:sage [2009/02/08(日) 12:09:49 ]
>>857
明確な答えは求めておりません。
質問というよりは
「オレはこういうやり方で開発やってるぜ」
という話が聞けたらなぁという感じですね。

どちらかというとブレインストーミングに近いかも。

859 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:44:49 ]
じっとソースコードを眺めて、ここでこうなっているはずなのに
こんなことになっている、ということはその原因の候補は……
と考えるだけでもわりととれるもんだよ、バグ。

860 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:57:18 ]
・コンパイラにはocaml 3.10
・デバッグのはprint
・エディタにはEmacs + caml-mode
・IDEは使わない
・コンパイルするまえに検証 <- ??? そんなことできるの?
・バグが見つかったときの対処方法 printデバッグ

861 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:50:04 ]
ホーア論理を御忘れか?

862 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:29:52 ]
MLのHoare論理はまだ研究段階

863 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:35:13 ]
completeである必要はないんじゃないの? > 人間のやる検証

864 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:51:49 ]
コンパイルの前に検証って、エディタがtypoや型エラーを指摘してくれるとかそういうのじゃないの?

865 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 07:42:47 ]
ちょ MLで Hoare論理ってwww バカスwwww

866 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 12:34:14 ]
>>864
それは深読みすぎ




867 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:43:11 ]
>>864 型エラーとかシンタクスとかはコンパイルでチェックしてくれるから
それでよくね?セーブしてコンパイル の時間がそんなに惜しい?一瞬でしょ

868 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 00:08:11 ]
OMake -pの事でしょ?
-p
Watch the filesystem for changes, and continue the build until it succeeds. If this option is specified, omake will restart the build whenever source files are modified. Implies -k.
このレスポンスを一度体験すると割とはまる。

869 名前:  mailto:sage [2009/02/24(火) 10:58:46 ]
Ocaml初心者です。

let ( ) = print_string "Hello World\n"

ってのは何を意味するのですか? let の後には関数名とか変数名とかじゃないのですか?
let ( ) = ってのがわかりません。
教えてください。

870 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 12:04:36 ]
let には二通りある:
let f x y z = 式 (省略)
let パターン = 式

パターンは、簡単に言えば、変数を含んだ値のようなもの。
右辺の式を評価後、パターンに対してパターンマッチを行い、
パターン内に変数があれば、変数部分に該当する値を束縛する:

let x = 1 (* x = 1 *)
let (x,y) = 1, 2 (* x = 1, y = 2 *)
type t = { label : int; foo : float }
let { label = x } = { label = 2; foo = 3.0 } (* x = 2 *)
let x::xs = 1 :: [] (* x = 1, xs = [] *)

変数がなければ束縛は起こらない。
let true = 3 > 2 (* no binding *)

パターンの定数と、右辺の結果に齟齬があるばあい、パターンマッチは失敗する:
let (false, true) = 3 > 2, 2 > 0 (* match failure *)

let () = print_string "..."

最後の式は右辺の結果を () にパターンマッチさせているが、() の型 unit には
() しか値がないから、マッチは必ず成功する。なので、コンパイラはわざわざこの
マッチを行うようなコードは生成しない。結果、この式は、右辺を実行するだけ。


871 名前: mailto:sage [2009/02/24(火) 15:51:06 ]
>>870
Ocamlにパターンマッチがあるのは知ってましたが、これがそうだとは気づきませんでした。
詳しくありがとうございました。

872 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 19:37:03 ]
let main = print_string "Hello, world!\n"
とかの方がわかりやすいと思うけどなあ。俺はこっち(let main = ...)を使っている。
let () = ... ってなんでこうするんだろ。何かメリットあるのかな?

何にせよ右側の式が評価されることにはかわらないからどっちでもよいとは思うが。

873 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 19:46:51 ]
>>872
だって、将来使わないものをわざわざ定義したら、後で読み返したときややこしくなるじゃん。

874 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 21:34:47 ]
オブジェクト指向言語の良い所は変数やメソッドの名前が分かり易い事だと思うんだけど、
関数型言語の良い所は名前をイチイチ考えなくて良い事だよね。

875 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 21:44:44 ]
いやちゃんと考えろよ…意味を表す名前を

876 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:02:32 ]
いや本当に必要な時は考えてるよ…関数型言語だとそれが少ないだけで



877 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:06:58 ]
関数型言語ML 最終話 「なまえをよんで」

878 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 09:30:13 ]
>>873
名前を付けたくないなら、普通 let _ = ... じゃね?


879 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 14:04:44 ]
我が輩は関数である。名前はまだ無い。
どこで生まれたかとんと見当がつかぬ。何でも薄暗いじめじめした所で他の関数に渡された事だけは記憶している。

880 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 14:08:47 ]
そうだな。let ()だと、右辺がunitを返す場合しか使えない

881 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:51:42 ]
本当はちゃんと意味を表す名前をつけるべきなんだろうけど、
関数型言語でそれをやると馬鹿にされそうで、ためらってしまうな

882 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 21:32:47 ]
>>880
unitを返すのが分かるなんて 何て素敵な!

883 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 09:44:11 ]
>>880
>>882 の通りで、

let _ = Printf.printf "%d %d" 1

のようなコードを書いて、先生、何も起こらないんですが、と聞かれたことがある。
そりゃ見た目何も起こりませんがな。


884 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:06:10 ]
let main = ...
let _ = ...

の場合、副作用がなく返り値に意味がある別の関数を誤って呼んでしまうミスを見つけづらい。
たとえば ioaccess_in : ... -> int と ioaccess_out : ... -> unit が定義されているとして

let _ = io_access_out ...
let c = io_access_in ...
let _ = io_access_out ...
let _ = io_access_out ...
let c = io_access_in ...
let _ = io_access_in ...
let _ = io_access_out ...
let _ = io_access_out ...
let c = io_access_in ...
let _ = io_access_out ...
let _ = io_access_out ...
let c = io_access_in ...
let _ = io_access_out ...

のようなコードのバグ。

let () = ...

なら、そのミスも型検査で検出できる。


885 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 09:11:08 ]
あるある

886 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 20:32:14 ]
ここ
alain.frisch.fr/soft.html#patches
の patch_record が凄く魅力的なんだけど、同じことを camlp4 で
できないかな。



887 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 17:52:22 ]
型に unaware な camlp4 では全く同じ事は無理です
local open を使うか、
module alias でも使って文字数を減らすぐらいかなぁ

fun r ->
open Very_long_module_and_I_do_not_want_to_type in
r.x

fun r ->
let module M = Very_long_module_and_I_do_not_want_to_type in
r.M.x


888 名前:デフォルトの名無しさん [2009/04/08(水) 15:10:44 ]
>>879
コピペだけど

【手続き型】

吾輩は猫である。
名前はまだ無い。
どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
吾輩はここで始めて人間というものを見た。

【関数型】

人間というものを始めて見た薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶しているがどこで生まれたかとんと見当がつかず名前がまだ無い猫である吾輩。


889 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 19:53:44 ]
時間が経過すると…

【手続き型】

吾輩は猫である。
親ゆずりの無鉄砲で子供の頃から損ばかりしている。
「おい、地獄さ行ぐんだで!」
ウスウスと目を覚ました時、蜜蜂の唸るような音は、まだ、その弾力の深い余韻を、私の耳の穴の中にハッキリと引き残していた。
国境の長いトンネルを抜けると雪国であった。
名前はまだない。

890 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 16:10:18 ]
…………ブウウ懼懼懼懼懼懼ンンン懼懼懼懼懼懼ンンンン………………。


891 名前:デフォルトの名無しさん [2009/04/09(木) 19:16:00 ]
CMの使い方を教えてください。
SML/NJで、use文のカスケードではロードが厳しくなってきたので、
CMに移行しようとしているのですが、以下の点で困っています。


(1) 対話型環境を使って計算したい。そのため、トップレベルに関数を
展開したいが、.cmにはトップレベル関数・値を書けない。
 今のところ、open XXX; がならんだ .smlを作って、これをuseしている。

(2) 中置演算子の割り当てをトップレベルに置きたい
 目的は、(1)と同じ。こちらは、実現方法が見つからない。


892 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 17:14:43 ]
float は boxing して扱われ、気合の入った最適化をしているわけでもないっぽい OCaml が
レイトレースのベンチマークで C++ と勝負できる位置にいるのはなんで?

893 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 20:17:02 ]
>>892
関数型言語は手続き型言語より最適化しやすいよ

関数型は中間表現で CPS 使ってる奴が多いから、 気合いが入って
なくても SSA 使ってる手続き型言語程度のコードは吐き出しそうな
気がする

fortran を除くと、手続き型言語のコンパイラの内部表現に SSA を
使うのが一般的になったのは、わりと最近じゃなかったっけ?

gcc だと 4 系列から SSA だっけか?


894 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 20:46:10 ]
とりあえずF#からいじり始めてる新参者なんですが、immutableなデータの取り扱い教えてくんなまし
immutableにするとMapReduceみたいにナイスに並列化も出来てクールだぜというのはわかったんですが、その結果とかで何処かにステートのチェンジが起きますよね?
Haskellのゲームかなんかでキャラの移動とかされた結果のそのシーンの状態を新しいWorldとして作っていくことでimmutableを維持してるとか言ってたんですが、業務アプリとかだと同なるんざんしょ。
別の記事か何かで、全体のデータ構造をobject-oriented西といて、その間の処理とかをfunctionalにするのが現実的だとかも言ってたんですが。
教えてエロイ人

895 名前:デフォルトの名無しさん [2009/04/29(水) 00:17:23 ]
smlって実行結果が長いとき#で省略されちゃいますよね?あれを最後まで表示
させたいときって、どうすればいいんですか?printの引数はstring型でsring
にするにはInt.toString(a)などとすればできますが、intとchar型くらいしかできませんよね?
新しくつくった型には使えないのでどうすればよいかわからなくて・・・
誰か教えて下さい。

896 名前:デフォルトの名無しさん [2009/04/29(水) 07:05:49 ]
別にデータをimmutableにするのにゲームも業務アプリも変わんないんじゃん



897 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 09:25:16 ]
データ毎回全部作り直すの?

898 名前:デフォルトの名無しさん [2009/04/29(水) 22:16:45 ]
そうしてもいいけど、、、
普通は関数的なデータ構造では更新後と更新前が「ある程度共有される」。
たとえばリスト構造の先頭のほうを作り直す場合とかそうでしょ。
なおかつ共有されちゃっててもこまらないのはデータがimmutableだからこそだともいえる。
そしていろいろなデータ構造でimmutableでありながらも空間効率や時間効率のいいアルゴリズムが開発されてる。
Haskellのゲームかなんかで云々っていうのもデータを毎回全部作り直すという話じゃないと思うよ。

899 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 20:03:46 ]
「プログラミングの基礎」浅井健一という本は、
他の言語経験が無くOCamlがわからない人でもついていけますか?

900 名前:デフォルトの名無しさん [2009/05/01(金) 20:24:05 ]
>>899 どのように考えながらプログラミングをしていくかが丁寧に書いてあるのでお勧めです。
もう少し高度な機能が知りたくなったら「プログラミング in OCaml」。

901 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 01:25:00 ]
>>895
ぱっと思いついたのは、print関数自作かSMLFormat使う

902 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 19:04:23 ]
質問です

ML系またはHaskell系言語でGUI開発に便利なRAD環境が充実している言語って何でしょうか?
できれば個人的なお勧め開発環境も教えていただければうれしいです。

903 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 19:22:56 ]
VBに匹敵するようなものはないなぁ

904 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 19:37:35 ]
F#でよくね?

905 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 22:12:06 ]
OCaml にありそうな気がす

906 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 22:30:47 ]
ここまでGUIプログラムを開発した人なし



907 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 11:28:08 ]
LablGtk の glade インターフェースを 5 年前に使ったけど、まあ、glade だったよ。


908 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 14:22:49 ]
GUIイラネ

909 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 15:00:29 ]
>>908
で?

910 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 15:01:42 ]
別にGUIイランやつはイランで結構だろ。
誰も強制なんかしてないんだし。
ここでそんなこと表明する意味がわからん。

911 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 16:25:14 ]
GUIイラネの人じゃないけど、言語処理系をパッケージシステムで
インストールするとき、最近はGUIツールキットまで一緒に入れようと
するのが結構あってうざいんだよね。幸いML関連でそういうのにあたった
ことはないけど、こないだMacPortsでSWI-PrologとErlangを入れたら
いろいろ勝手に入って来て大変だった。オプションでも外せないし。
将来lablgtkなんかを強制されるようになったらOCaml捨てたくなる。

こっちは今後もコマンドラインだけでひっそり生きていきたいんだから
ほっといてほしい。

912 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 16:42:41 ]
そんなもん、自分でコンパイルすりゃ良いんじゃねーの?

GUI無きゃないで、
「今時、言語側でdefaultでGUIぐらいつけろ。」
とか言う人出そうだし。

オメーン所の、パッケージ作成者に言うことだろうが。


913 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 16:50:45 ]
デフォルトでついていても使わなきゃいいだけの話。
もしデフォルトで付いていればインストールの手間もなくなるし、
公式お墨付きということでヒューマンインターフェースが共通化されて利用者にとって便利になる。
どうしてもそれに不満があれば別のライブラリをインストールすればいいだけのことだし。
言語にGUIライブラリがくっついていたら何が不満なのかわからん。
容量にしてもインストール時間にしても対して違わない。
処理系を自前でコンパイルしてるやつは多少コンパイル時間が長くなるが、些細な問題だよな。

914 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 17:53:25 ]
>>913
たとえば、SWI-Prologのインストールで入ったライブラリのために、
別の言語のインストールでエラーになるということはあるよ。

915 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 17:56:07 ]
ディスク容量が限られてる環境なので、依存するライブラリをあれこれ
入れられるとうっとおしい、とか、サーバサイドアプリで、サーバには
あれこれ入れたくないとか、パッケージ管理システムがバイナリベース
じゃなくてゴリゴリコンパイルするのでやってられない、とか。

(パッケージのメンテナが)簡単に分離できるような構成にしておいて
ほしい、という要望はありなんじゃないか?

916 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 18:10:00 ]
つGentoo



917 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 18:20:41 ]
>>911
MacPortsならパッケージ作成者がGUI無しのvariantsを用意すればいいだけの
話だよな。それが嫌だったらパッチ書いて送るしかないだろ。

918 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 18:21:16 ]
>>915
> (パッケージのメンテナが)簡単に分離できるような構成にしておいて
> ほしい、という要望はありなんじゃないか?
それはアリだな

919 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 18:28:08 ]
似たような文句のある人っているんだね。
X関連をいろいろ入れろと要求するのは勘弁してほしいよね。
あくまで言語を入れたいんだからGUIはあくまでオプションにしていてほしい。
こっちはGnomeみたいなリッチなデスクトップじゃなくてまだtwmなんだよ。

920 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 19:12:50 ]
>>919
twmって割と重くて使いにくいと思ってたんだがまだ使ってる人いたんだww
みんなawesomeとかfluxboxとかに移行しちゃったと思ってた。



921 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 19:24:48 ]
基本的にUIに興味ないもんでいろいろ試すのが面倒で。
言語は片っ端から使ってみているのだけど。

# 言語もある意味UIの一種だというツッコミを受けそうだ :-)

922 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 19:39:25 ]
コンピュータを何につかってんの?
どうせ論文にもならないような研究ごっこやって妄想して遊んでるだけだろ。

923 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 21:38:30 ]
たぶん>>921さんみたいな人はWindows(メイン)ともう一台(実験用)みたいな構成だと予想。

924 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 21:44:55 ]
まぁ2chよりでくだらない煽りを書いてるよりは有意義なことかと

925 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 22:25:07 ]
>>922
俺は自宅で10台ぐらいのクラスタで論文にできる研究やってるよ

926 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 22:27:37 ]
ただ並列化して測定しました、という類の論文は勘弁してくれ

査読するたびにうんざりする



927 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 22:35:02 ]
>>925
InfiniBandか10GbEか分からんけど、電気代凄そうだな

928 名前:925 mailto:sage [2009/05/11(月) 22:44:36 ]
>>926
そんなどこかの高校生じゃあるまいしw

929 名前:925 mailto:sage [2009/05/11(月) 22:48:01 ]
>>926
頼まれたこともないくせにw

930 名前:925 mailto:sage [2009/05/11(月) 22:49:09 ]
>>927
家庭用だぜ?
1GbEに決まってるだろ

931 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 22:58:29 ]
これは推して知るべしだな

932 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 00:46:29 ]
10台ぽっちでクラスタって…

933 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 12:42:55 ]
>>911
macports使ってるけど、Xがからまないと確かに気楽だなあ。
macportsだったら、swi-prolog-liteがおすすめ。

934 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:12:16 ]
関数型言語の話題になっていない件について。


ライブラリが豊富なのが魅力で最近やっとSML/NJからOCamlに移行したんだが、
SMLで書いたコードを書き換えるのが結構面倒。
文法的にもOCamlって面倒臭く感じるんだけど、単なる慣れの問題?

935 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:20:43 ]
let fun や let val とか tuple には必ず括弧を書いていた癖に、
何が面倒なのかわからんが、camlp5 には pa_sml があるのでそれを使ってみ?



936 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 14:15:41 ]
再帰関数の定義がlet recだったり関数引数のパターンマッチングを
let funcName = function ... | ... のように書くのが面倒に思えたんで。
確かにSMLにも冗長な部分はあるし、慣れだとは思うんだが。

何らかのトランスレータはあると思っていたのだが、camlp5なんて便利なものが
あったとは。2000行程のSMLコードをうまく変換出来たよ。どうもありがとう。



937 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 14:50:17 ]
>>932
どうでもいいけど、計算そのものの研究ならクラスタであれば台数は関係ないのでは?

938 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 16:03:34 ]
>>936
ホントに変換できたんだ!知らずに教えといてすまんが、使ったことなかったんで。


939 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 16:45:46 ]
>>938
camlp5 pa_sml.cmo pr_o.cmo -impl MyModule.sml
で変換できた。printをprint_stringに置換する必要はあったけど。
まじで助かった。

940 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 17:41:59 ]
それはよござんした


941 名前:デフォルトの名無しさん [2009/05/12(火) 23:47:13 ]
関数型言語って、常微分方程式の初期値問題の数値解を求めたりするのには向いてますか?
科学技術計算を中心にした関数型言語の入門書でなにかいいのありますか?

942 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 00:31:28 ]
f# for scientists

943 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 14:36:30 ]
>>925
なぜ自宅で?
まともな研究じゃないな

944 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 14:37:24 ]
粘着乙


945 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 14:38:10 ]
>>944
早ッ!!

946 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 14:39:01 ]
>>942
Harrop の本なんか読むなよ、頼むから。




947 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 14:57:42 ]
>>943
大学にいる人間じゃないから、そういう研究は自宅でしかできないんだよ。

948 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 22:16:09 ]
>>946
その著者が書いた唯一の本のようだが。

949 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 22:52:58 ]
>>947
計算機科学の研究は分野によってはPC1台でも十分に出来るのが良い所。
ぜひ成果を出して論文投稿してくれ。

950 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 22:56:19 ]
成果が出なくても rm するだけというのも良い所。

951 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 08:42:20 ]
>>948
その著者が書いたSpamは山程ある。


952 名前:デフォルトの名無しさん [2009/05/14(木) 22:02:27 ]
うまいこといいやがって

953 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 19:01:26 ]
>>946 >>951
kwsk

954 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 09:43:34 ]
john harrop troll でググレカス


955 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 14:26:16 ]
John Harropってtrollすぎてワロタ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<224KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef