関数型言語ML (SML, OCaml, etc.), Part 6
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/06/15(月) 07:15:21MLは、確固とした理論的背景を持つ言語でありながら、
現実的なソフトの開発にも使用できる実用性を備えた言語です。
また、プログラミングの初心者が最初に学習する言語としても優れています。
総本山
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/
0002デフォルトの名無しさん
2009/06/15(月) 19:45:36学習者が増えないのはなぜなの?
0003デフォルトの名無しさん
2009/06/15(月) 19:57:50教える側が理解していないから。
0004デフォルトの名無しさん
2009/06/15(月) 20:04:59初心者が日常で使うにはハードルが高いからかな
0005デフォルトの名無しさん
2009/06/16(火) 01:24:50Lispいじってた俺にとってはOcamlの方が見た感じ楽そうに見えるけど
Lisp、Ocaml、Haskellマスターの意見が聞いてみたいな
0006デフォルトの名無しさん
2009/06/16(火) 09:59:160007デフォルトの名無しさん
2009/06/16(火) 22:59:25型つき関数型言語の背景にある背景理論(ラムダ計算)をぱっと勉強したいならHaskell,
実用で長いこと使いたいならOCaml。
0008デフォルトの名無しさん
2009/06/16(火) 23:52:08勉強のためにStateパターンをモジュールを使ってやってみようと思ったのですが、
相互依存を回避するうまい方法が思いつきません。
また、状態をそれぞれ別モジュールにするにせよ、一箇所にまとめるにせよ、動的に切り替えるためには
結局パターンマッチさせてそれらを呼び出すようになると思いますが、もっとスマートな方法はありますか?
0009デフォルトの名無しさん
2009/06/17(水) 10:23:08まずは具体的な実装例を挙げてみたら?
0010デフォルトの名無しさん
2009/06/17(水) 10:43:320011デフォルトの名無しさん
2009/06/17(水) 10:51:3600128
2009/06/17(水) 12:36:14流れ:
キャラクタがバイトをして財布がいっぱいになったら銀行へ行く
ということを目標金額まで繰り返し、到達したらその金がなくなるまで
家でごろ寝し、なくなったらまた働く
キャラクタは
・バイトをする : 手持ちが1増える
・銀行で貯金をする : 手持ちを0にし、貯金が1増える
・家で寝る : 貯金が1減る
の状態を取ります。
財布の許容量は3、目標貯金額は5とします。
Ocaml的な解決方法のアドバイスをいただけると幸いです。
ちなみに元々の問題は「実例で学ぶゲームAIプログラミング」
という本の2章に出てくる、上記の問題例にいくつか余分な状態を
追加したようなものです。
元々の問題をとりあえず実装してみたソースとサンプルソースも
あげてみました。
http://www1.axfc.net/uploader/Sc/so/9827.lzh
00138
2009/06/17(水) 12:42:44アップロードするのは初めてでよくわからないままaxfcを
使用したのですが、プログラム板で一般的に使用されている
アップローダーというものはあるのでしょうか?
0014デフォルトの名無しさん
2009/06/17(水) 14:43:02その手の奴って素直に状態保持した方が色々スッキリしそうなんだけどどうなのエロイ人
0015デフォルトの名無しさん
2009/06/17(水) 16:54:33> キャラクタは
> ・バイトをする : 手持ちが1増える
> ・銀行で貯金をする : 手持ちを0にし、貯金が1増える
> ・家で寝る : 貯金が1減る
> の状態を取ります。
ニート解:
キャラクタはバイトせず取り敢えず銀行へ行く
ということを目標金額まで繰り返し、到達したらその金がなくなるまで
家でごろ寝し、なくなったらまた働かずにまた銀行へ行く
0016デフォルトの名無しさん
2009/06/17(水) 17:28:060017デフォルトの名無しさん
2009/06/17(水) 22:02:12http://codepad.org/
0018デフォルトの名無しさん
2009/06/17(水) 22:22:200019デフォルトの名無しさん
2009/06/17(水) 22:31:48class RichState implements State { public void whatToDoNext() { goToTheBank(); }
class PoorState implements State { public void whatToDoNext() { work(); }
...
みたいなイメージですか?
0020デフォルトの名無しさん
2009/06/17(水) 23:05:020021デフォルトの名無しさん
2009/06/17(水) 23:07:47たぶん>>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);;
0022デフォルトの名無しさん
2009/06/17(水) 23:09:23let rec life state days =
printfn "%A" (state, days);
if days = 0
then ()
else
match state with
// 財布がいっぱいになったら銀行へ行く
| (Working, (3, account)) -> life (Working, sigma Deposite (3, account)) (days - 1)
// ということを目標金額まで繰り返し
| (Working, (budget, 5)) -> life (Resting, sigma Rest (budget, 5)) (days - 1)
// (財布がいっぱいになるまでは働く)
| (Working, s) -> life (Working, sigma Work s) (days - 1)
// 到達したらその金がなくなるまで家でごろ寝し、なくなったらまた働く
| (Resting, (budget, 0)) -> life (Working, sigma Work (budget, 0)) (days - 1)
// (なくなるまではごろ寝する)
| (Resting, s) -> life (Resting, sigma Rest s) (days - 1);;
改行が…まぁいいか
ちなみにF#です
00238
2009/06/18(木) 00:21:17継続について調べてみます。
>>17
ありがとうございます。今度コードを晒すときに使ってみます。
>>19
おそらくそのイメージで合っていると思います。
(とはいってもJavaはよくわからないのですが・・・)
トップレベルでキャラクタクラスのUpdateを呼び出すと、保持している
派生状態クラスのインターフェースに自身を渡して実行。あとはよろしく。
状態の切り替えも勝手にお願いね。
的なコードが元々のサンプルコードです。
>>21
コードを書いていただきありがとうございます。
例題を簡略化したせいで反ってわかりにくくなってしまい、すみませんでした。
とりあえず継続というものを調べつつもう少し考えて見ます。
皆様ありがとうございました。
0024デフォルトの名無しさん
2009/06/18(木) 22:18:10(* 1/2 *)
type state = { cash: int; deposit: int; action: unit -> state }
let rec work_state cash deposit = {
cash = cash;
deposit = deposit;
action = (fun () ->
print_endline "work";
let cash' = succ cash in
if cash' < 3 then work_state cash' deposit
else rich_state cash' deposit
)}
and rich_state cash deposit = {
cash = cash;
deposit = deposit;
action = (fun () ->
print_endline "go to the bank";
let deposit' = succ deposit in
if deposit' < 5 then work_state 0 deposit'
else neet_state 0 deposit'
)}
0025デフォルトの名無しさん
2009/06/18(木) 22:19:23and neet_state cash deposit = {
cash = cash;
deposit = deposit;
action = (fun () ->
print_endline "sleep";
let deposit' = pred deposit in
if deposit' > 0 then neet_state cash deposit'
else work_state cash deposit'
)}
let initial_state = work_state 0 0
0026デフォルトの名無しさん
2009/06/19(金) 09:08:15行動の結果と選択を独立に実装できる方が
将来の拡張にはよいんじゃないかな、
特に質問者はゲームAIの本読んでるらしいし。
0027デフォルトの名無しさん
2009/06/19(金) 14:59:300028デフォルトの名無しさん
2009/06/20(土) 12:20:07クロージャの(環境の)合成がしたくなったのですが失敗します
再現コードを書くと
ma,mbは期待通りですがmcは毎回1が出力されます
環境の中の環境ってのは呼ばれるごとに新しい環境になるからってことですかね
let a x f=
let r = ref x in
fun ()->Printf.printf "%d" !r;f(); r:=!r+1;;
let b x f=
let r = ref x in
fun ()->Printf.printf "%d" !r;f(); r:=2* !r;;
let c x f =
fun ()->(a x (b x f))();;
let ma = a 0 (fun ()->Printf.printf "a\n" );;
let mb = b 1 (fun ()->Printf.printf "b\n");;
let mc = c 1 (fun ()->Printf.printf "c\n");;
ma();;ma();;ma();;
mb();;mb();;mb();;
mc();;mc();;mc();;
てことはOCamlのオブジェクト指向部分ちゃんと覚えないとだめかな
by poor man
0029デフォルトの名無しさん
2009/06/20(土) 16:54:49match list with
[] -> 0
| x::rest -> 1 + length rest;;
このリストの長さを返す再帰関数の動きなんですが、下へ展開していって
ループが終了したら、上に値が戻ってくるイメージでOKですか?
length [2; 1; 3] = match [2; 1; 3] with
| 2 :: [1; 3] -> 1 +
length [1; 3] = match [1; 3] with
| 1 :: [3] -> 1 +
length [3] = match [3] with
| 3 :: [] -> 1 +
length [] = match [] with
[] -> 0
1 + 0
1 + 1
1 + 2
length [2; 1; 3] = 3
0030デフォルトの名無しさん
2009/06/20(土) 17:01:540031デフォルトの名無しさん
2009/06/20(土) 17:02:560032デフォルトの名無しさん
2009/06/20(土) 17:16:19基本的に再帰は漸化式と同じと考えれば良い。
それで合ってるが、一々動作を深く考えずに関数を定義出来るようになるのが
最初の一歩だから精進すべし。
0033129
2009/06/20(土) 17:41:30命令型言語だとカウントする変数を作ってa = a + 1みたいな
イメージが強くて直感的にこのソース見て理解出来なかったので。
書いて見ると理解出来るもんですね。精進します。
0034デフォルトの名無しさん
2009/06/20(土) 21:21:43ocamlのトップレベルには#traceというディレクティブがあって、
指定した関数の動きが表示される
再帰関数の動きを確認するのにはやや便利だから使ってみて
# #trace length;;
length is now traced.
# length [1;2;3];;
length <-- [<poly>; <poly>; <poly>]
length <-- [<poly>; <poly>]
length <-- [<poly>]
length <-- []
length --> 0
length --> 1
length --> 2
length --> 3
- : int = 3
0035デフォルトの名無しさん
2009/06/21(日) 13:16:20こういうのあったんですね。助かります。どもです。
0036デフォルトの名無しさん
2009/06/21(日) 19:21:200037デフォルトの名無しさん
2009/06/21(日) 19:24:330038デフォルトの名無しさん
2009/06/22(月) 09:18:56質問をまず推敲してくれ。「期待」とやらが何かわかんねー。
> てことはOCamlのオブジェクト指向部分ちゃんと覚えないとだめかな
それは違うだろ。
0040デフォルトの名無しさん
2009/06/23(火) 09:00:15HLVMってのはLLVMの関数型特化版、みたいなイメージ?
OCamlはこっちになるの? おしえてエロいひと
0041デフォルトの名無しさん
2009/06/23(火) 10:34:57> HLVMってのはLLVMの関数型特化版、みたいなイメージ?
そういう理解でいい。
HLVM そのものの批判は詳細を知らないのでできないけど、
- Caml team は HLVM プロジェクトには全く噛んでない。
- Caml team と consortium が関知しない code generation の総入れ替えはありえない。
- HLVM で騒いでいる奴は各種言語メーリングリストの有名粘着。何かというとすぐ自分の有料メールマガジンに誘導。
- なんかちょっとした toy example が出来るたびに大騒ぎ。正直みんな食傷している。
将来化ける事もあるかもしれない。が、今は放置をお薦め。時間の無駄。
0042デフォルトの名無しさん
2009/06/23(火) 13:27:16前スレでも話題になってたHarropのこと?
0043デフォルトの名無しさん
2009/06/23(火) 16:00:15ここに
「Feathers氏に反対する人の多くは、関数型のコード乱雑になる原因は、
関数型ではないイディオムを関数型言語に持ち込んだこと以外にはないと
信じている。」
っていう記述があるけど、関数型言語のイディオム(とかデザインパターン)って
どんなのがあるの?おしえてエロいひとー
0044デフォルトの名無しさん
2009/06/23(火) 16:23:20原文を読んでみると、単に副作用のない純粋関数型のコードを
関数型のイディオムと呼んでいるように思えるな。
0045デフォルトの名無しさん
2009/06/23(火) 17:28:56そうだとするとあまりに漠然としていて多少の窮屈感が欲しくなるな。
ノーパンでスカートを穿いているような、あるいは力戦になって次に
なにを指せばいいのかわからない、そんな感じ。
そのうちそういうのがまとめられればいいなぁ。
0046デフォルトの名無しさん
2009/06/23(火) 17:29:56>>44が正解
0047デフォルトの名無しさん
2009/06/23(火) 17:58:00おっしゃる事があまりに漠然としていて多少の具体感が欲しくなるな。
ノーパンでスカートも穿いてないような、あるいは序盤なのに次に
なにを指せばいいのかわかってない、そんな感じ。
そのうちそういうのをまとめられるようになってくれ。
0048デフォルトの名無しさん
2009/06/23(火) 18:23:04関数型が嫌いor慣れてない人の多くは純粋関数型の副作用の無い世界を
非常に窮屈だと感じるわけで。不感症になったのも慣れということだなw
0049デフォルトの名無しさん
2009/06/23(火) 18:37:21そのまんま、関数型スタイルだろ。
0050デフォルトの名無しさん
2009/06/23(火) 21:34:35ありがとん参考になった!
ベンチマークだけみて速いなーとか思っただけなんで、
そんな背景があったとはまったく知らんかったyo
0051デフォルトの名無しさん
2009/06/24(水) 09:15:16GC なしで早いよーと叫ばれてもね。
普通にMLのプログラムがコンパイル出来るようになったら
ベンチを見てみてもいい。
0052デフォルトの名無しさん
2009/06/24(水) 09:18:35デザインパターンってぶっちゃけてみれば、バッドノウハウのことでしょ。
関数型言語にそんなのないよ。
0053デフォルトの名無しさん
2009/06/24(水) 09:23:490054デフォルトの名無しさん
2009/06/24(水) 19:11:49関数型言語にデザインパターンがないということはないだろう。要は「あるあるネタ集」(の粒度がある程度あるもの)のことなんだから。
オブジェクト指向でのデザインパターンは関数型言語ではバッドノウハウになり得るというのは同意。
0055デフォルトの名無しさん
2009/06/24(水) 19:16:04バッドノウハウはアンチパターン
0056デフォルトの名無しさん
2009/06/24(水) 21:07:530057デフォルトの名無しさん
2009/06/24(水) 21:30:130058デフォルトの名無しさん
2009/06/24(水) 21:36:15特に関数型言語が好きだからとかではなく。客観的事実。
0059デフォルトの名無しさん
2009/06/24(水) 21:37:58スレッドで動いてるガベコレも時々挙動がおかしくなるからうんこ。
0060デフォルトの名無しさん
2009/06/24(水) 22:47:46C・Y・C第1巻は、発売未定です。夢野カケラ
OCaml : チクショオオオオ!くらえC++!ガベージコレクション!
C++ : さあ来いOCaml!実はオレは一回不正なメモリ操作しただけで死ぬぞオオ!
(ガッ)
C++ : グアアアア!こ、この地上でもっともバカな言語と呼ばれる四天王のC++が…
こんな不純粋関数言語に…バ…バカなアアアアアア
(ドドドドド)
C++ : グアアアア
Delphi : C++がやられたようだな…
VB : フフフ…奴は四天王の中でも最弱…
C# : MLごときに負けるとは手続き型言語の面汚しよ…
OCaml : くらええええ!
(ズサ)
3言語 : グアアアアアアア
OCaml : やった…ついに四天王を倒したぞ…これでJavaのいるWindowsのWindowが開かれる!!
Java : よく来たなObjective Caml…待っていたぞ…
(ギイイイイイイ)
OCaml : こ…ここがWindowsだったのか…!感じる…Javaの魔力を…
Java : OCamlよ…戦う前に一つ言っておくことがある。お前は私を倒すのに
『オブジェクト指向』が必要だと思っているようだが…別になくても倒せる
OCaml : な 何だって!?
Java : そしてお前の入門書は増えてきたので最寄りの本屋へお取り寄せしておいた。
あとは私を倒すだけだなクックック…
(ゴゴゴゴ)
OCaml : フ…上等だ…オレも一つ言っておくことがある。このオレに生き別れたF#が
いるような気がしていたが別にそんなことはなかったぜ!
Java : そうか
OCaml : ウオオオいくぞオオオ!
Java : さあ来いOCaml!
OCamlのnative codeが世界を救うと信じて…! ご愛読ありがとうございました!
0061デフォルトの名無しさん
2009/06/24(水) 23:13:22ワロタ
0062デフォルトの名無しさん
2009/06/25(木) 00:05:560063デフォルトの名無しさん
2009/06/25(木) 00:40:01F#スレにこんなのあったよ
553 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/01(月) 22:32:37
>>552
OCamlのみ
多相ヴァリアント、ファンクタ、注釈ありで型がつく箇所では省略しても必ず型推論できる性質
Camlp4/5、ビルド関係のツール(F#はしょぼい)
オブジェクト指向部分は根本的に違う(nominal/structural)
0064デフォルトの名無しさん
2009/06/25(木) 00:47:26ありがとう。なんか半分以上わからないけど。わかった事にしとく。
0065デフォルトの名無しさん
2009/06/25(木) 02:30:58ワロタw
WindowsのWindowにやられたww
0066デフォルトの名無しさん
2009/06/25(木) 11:26:18caml-list で Harrop が
New HLVM examples!
というサブジェクトで騒いでるから、それ見て、判断して。
0067デフォルトの名無しさん
2009/06/25(木) 11:37:09ここで聞くのもアレだけど
型推論が残念なことになったのは演算子のオーバーロードのせい?
0068デフォルトの名無しさん
2009/06/25(木) 21:23:16そうかってwww
どんだけスルー
0069デフォルトの名無しさん
2009/06/26(金) 03:32:33を通そうとしたところ
This expression has type int but is here used with type int * 'a
といわれてしまいます。うまい方法はないのでしょうか?
0070デフォルトの名無しさん
2009/06/26(金) 04:50:58高階関数の引数が順番逆なだけじゃね
フォールドライトならそれでおkかも
0071デフォルトの名無しさん
2009/06/26(金) 11:43:480072デフォルトの名無しさん
2009/06/26(金) 12:25:05ちゃんと型を確認しだしたほうがいいね。
0073デフォルトの名無しさん
2009/06/28(日) 22:06:11↑ここを読んでいて、LablGLをインストールしようとして失敗しました。
どうしたらいいか教えてください。
OSはWindowsXPです。
・lablgl-1.04-win32.zipをObjective Caml以下のディレクトリに直接展開しました。
・Microsoft Visual C++ 2008 Redistributable Package (x86).をインストールしました。
・glut-3.7.6-bin.zipをダウンロードし、glut32.dllをsystem32フォルダにコピーしました。
・コマンドプロンプトを開き、
C:\Program Files\Objective Caml\lib\lablGLまで移動し、
ocaml build.mlをコマンドプロンプトから実行しました。
途中までは走っていたのですが、以下のようにエラーが出ました。
C:/Tcl/lib tk84.lib tcl84.lib gdi32.lib user32.lib " togl.cmo
ocamlc.opt -w s -I +labltk -a -o lablglut.cma -cclib -llablglut -dllib -llablglu
t -cclib "glut32.lib " glut.cmo
ocamlopt.opt -w s -I +labltk -c raw.ml
'ml' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
File "raw.ml", line 1, characters 0-1:
Error: Assembler error, input left in file C:\DOCUME~1\****<※ユーザ名>\LOCALS~1\Temp\camla
smd25ac5.asm
Native build failed: error 2
You can still use the bytecode version
Now ready to use on an OCaml MSVC port
※ここまで
またコマンドプロンプトから > lablglut を実行した際にもエラーが出ました。
Cannot load required shared library dlllablgl.
Reason: C:\Program Files\Objective Caml\lib\stublibs\dlllablgl.dll: このアプリケ
ーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケ
ーションを再度インストールすることにより問題が解決する場合があります。
※ここまで
0074デフォルトの名無しさん
2009/06/28(日) 22:25:15labltkはインストールしてるか
ocamlはネイティブコンパイラまでインストール済か
Activetclはバージョン8.5系だと動かなかったので8.4を入れる
build.mlを実行した際に
cygwinのlink.exeが使われるとエラーになるので
環境変数からcygwinのパスをはずす
glutはそれと同じバージョンで動いたよ
0075デフォルトの名無しさん
2009/06/29(月) 03:11:27レスありがとうございます。
ですがどうも上手く行かないので、悩んでいます。
どこかで薦められてOCamlは
"Self installer (3.11.0) for the port based on the MinGW toolchain"
が入ってますが、Cygwin入れてないんです。これが原因なのかなぁ。
Cygwin以前入れたのですが今は外してしまってます。
近いうちに再度Cygwinをインストールしてみることにします。
読み進めたいので、このまま>>73の第五回は一応読むだけ読んで、
次に行きたいと思います。
0076デフォルトの名無しさん
2009/06/29(月) 13:21:200077デフォルトの名無しさん
2009/06/29(月) 13:34:48OCamlSDL でサポートしてなかったら自作して公開よろ。
0078デフォルトの名無しさん
2009/06/29(月) 13:40:59だって、作るとしたらWin32APIとかOSSとかALSAとかいろいろサポートして、なおかつメンテもしないといけないんでしょう?
嫌ですよ。
0079デフォルトの名無しさん
2009/06/29(月) 16:08:25うわなんかヘタレられた。
自分のやりたいAPIのインターフェースだけ作りゃいいじゃん。
メンテもしたけりゃするだけでいいじゃん。
初期化とかは何かのライブラリ関数呼ぶだけだし。
やりたいことはほとんどデバイスから
ノンブロッキングに読んだり書いたりするだけで大抵出来るっしょ。
0080デフォルトの名無しさん
2009/06/29(月) 17:35:00そんな俺しか使わないライブラリを公開するぐらいなら、公開せずに手元に持っておいて、作り溜めしときますよ。
0081デフォルトの名無しさん
2009/06/29(月) 20:12:55俺もなんかそうなる。
OCamlは3.10.2でLablGLは1.03にもどしたら上手くいった
0082デフォルトの名無しさん
2009/06/29(月) 21:04:21ありがとうございます。1.03にしたら "OCaml build.ml"は上手く行ったようです。
しかし
「ocamlrun.exe - コンポーネントが見つかりません
ocamlrun.dll が見つからなかったため、このアプリケーションを開始できませんでした。」
となってしまいまたもや失敗。
>>73のリンク先を見るとLablGLのインストールが失敗してるというのですが
インストールしなおしても同じエラーメッセージが出ます。はてさて。
OCaml本体は"ocaml-3.11.0-win-msvc.exe"をインストールしなおしました。
0083デフォルトの名無しさん
2009/06/29(月) 22:06:31OcamlSDL関連のビルドで上手くいなかくてビルドを諦めた。
OCaml自体はプログラミング入門者にも比較的優しいと
思うけど環境は若干敷居が高めだと思う。
んでWindows使うのが悪いとかいわれちゃうとしょんぼりする。
そもそもLinux系を使うこと自体、本職でない人にとっては
普通ではないわけで。
0084デフォルトの名無しさん
2009/06/29(月) 22:14:49勉強不足を棚に上げた愚痴>>83を書いてみたら・・・。
ごめんなさい。反省しています。
0085デフォルトの名無しさん
2009/06/29(月) 22:15:430086デフォルトの名無しさん
2009/06/29(月) 22:17:230087デフォルトの名無しさん
2009/06/29(月) 22:17:580088デフォルトの名無しさん
2009/06/29(月) 22:18:10>>86
うん。わかってはいるんだ。あんな書き込みをしてしまってごめんとしかいいようがない。
0089デフォルトの名無しさん
2009/06/29(月) 22:29:170090デフォルトの名無しさん
2009/06/29(月) 23:16:11(いまさらだが)OCamlのReadmeを見ると MinGWの場合は
Do *not* install the Mingw/MSYS development tools from www.mingw.org:
these are not compatible with this Caml port (@responsefile not
recognized on the command line).
って書いてあるからCygwinが必要なんだと思われる。
英語は雰囲気で読んでいるので間違っていたら誰かやさしく叱ってくれ。
0091デフォルトの名無しさん
2009/06/29(月) 23:40:30> あれぇ?書き込めた。どうせアク禁の巻き添えで書き込めないだろうと
> 勉強不足を棚に上げた愚痴>>83を書いてみたら・・・。
この精神でビルドがんばれ。
どうせビルドできないと思ってもできるかも。
0092デフォルトの名無しさん
2009/06/30(火) 00:26:310093デフォルトの名無しさん
2009/06/30(火) 03:36:38そんなこと言ってるから関数型はいつまでたってもドマイナーなんだよ
0094デフォルトの名無しさん
2009/06/30(火) 04:59:310095デフォルトの名無しさん
2009/06/30(火) 12:32:440096デフォルトの名無しさん
2009/06/30(火) 12:45:460097デフォルトの名無しさん
2009/06/30(火) 12:50:27それは、ずいぶん、どい なか です ね
0098デフォルトの名無しさん
2009/06/30(火) 13:13:58009982
2009/06/30(火) 17:56:45結局Cygwinなんか入れるよりもお勉強用のLinuxマシンを用意した方が早そうですね。
レス頂いてありがとうございます。
0100デフォルトの名無しさん
2009/06/30(火) 18:50:55完全にスレチだが、別にマシンを用意しなくても仮想環境を使えば楽なのに。
010182
2009/06/30(火) 18:57:35Knopixとかならできるのかな?
0102デフォルトの名無しさん
2009/06/30(火) 23:12:27virtual boxでdebianがおすすめです。
かなり低スペックでも動いて、何よりaptーgetでocamlも含め、たいていのライブラリが簡単にインストール出来ます。
0103デフォルトの名無しさん
2009/07/01(水) 00:05:15@を使わずにquick_sortを書き換えよ
ヒント:引数を一つ増やして整列済みのリストを受け取る
ってやつが解けまへん。。
教えて、偉い人
0104デフォルトの名無しさん
2009/07/01(水) 01:27:12まじっすかー!ありがとうございます。
今Ubuntuのデュアルブート環境作成厨…orz
ウブンツ重かったらそちらを試してみます。
0105デフォルトの名無しさん
2009/07/01(水) 01:35:56本読んでないけど末尾再帰じゃないすかね。
0106デフォルトの名無しさん
2009/07/01(水) 08:39:57apt getはububtuもdebianもほぼ同じなので、ububtuでも大丈夫ですよ。
0107デフォルトの名無しさん
2009/07/01(水) 16:48:02Windows上では動かないん?会社がWindowsだから・・・。
動くなら今すぐそっちの環境に移行したい。
0108デフォルトの名無しさん
2009/07/01(水) 16:55:45当然動く訳無い。
大体Linux上で生成されるオブジェクトファイルはELFフォーマットだし。
0109デフォルトの名無しさん
2009/07/01(水) 21:24:540110デフォルトの名無しさん
2009/07/02(木) 09:07:04憶測で物を言うな。吐かない。終わり。
0111デフォルトの名無しさん
2009/07/02(木) 09:15:480112デフォルトの名無しさん
2009/07/02(木) 12:14:41終わったところすまないが、>>109は吐ける!と断定しているわけではないから
もう少し生暖かくてもいいと思うんだ。
0113デフォルトの名無しさん
2009/07/02(木) 12:49:21>>110はいい加減なこと言う奴にうんざりしてるんだろうな。
この板はそんな奴ばかりだから、せめてソースくらい示さないと。
0114デフォルトの名無しさん
2009/07/03(金) 05:15:370115デフォルトの名無しさん
2009/07/03(金) 08:55:56しーっ!そういうこと言うと
憶測で(ry
とか言われちゃう
0116デフォルトの名無しさん
2009/07/03(金) 12:38:28「書き換えよ」とか「引数を一つ増やして」といわれても元々のコードがないと
答えられないぜよ。
0117デフォルトの名無しさん
2009/07/03(金) 17:08:590118デフォルトの名無しさん
2009/07/03(金) 18:05:20そういえばOcaml-nagoyaの連中(有限会社ITプランニング)ってどうなったの?
なんか公式サイトにつながらないんだけど。
0119デフォルトの名無しさん
2009/07/03(金) 19:23:03SMLのコードを移植していてはまった
0120デフォルトの名無しさん
2009/07/04(土) 11:16:05練習でちょっとしたものを作ろうとしたけど、ライブラリの少なさでたちまち不便で止まってしまった。
0121デフォルトの名無しさん
2009/07/04(土) 11:52:020122デフォルトの名無しさん
2009/07/04(土) 12:10:390123デフォルトの名無しさん
2009/07/04(土) 12:19:32HaskellならMonad IOがスタンダードだが、OCamlにはないからね。
IOはどうしても副作用になってしまう。
0124デフォルトの名無しさん
2009/07/04(土) 12:32:250125デフォルトの名無しさん
2009/07/04(土) 13:37:39どんなライブラリが欲しかったのん?
0126デフォルトの名無しさん
2009/07/04(土) 13:58:47憶測(ry
じゃなくて、本が違う。
ITplan は知らんけど、一日ぐらいサイトが落ちてていいだろ。週末だし。
0127デフォルトの名無しさん
2009/07/04(土) 14:19:25どうでも良いけど、365日接続できないサイト運営してる時点で技術力を疑う。
0128デフォルトの名無しさん
2009/07/04(土) 14:34:190129ogasawara
2009/07/04(土) 17:30:22恐縮です。うちが契約してるデータセンター屋さんの電源障害だそうで、何ともならなくて。
そろそろ復活するらしいのですが、うーん。
0130ogasawara
2009/07/05(日) 09:28:07The Caml Hump(http://caml.inria.fr//cgi-bin/hump.en.cgi)という
ところがあって、ここでライブラリを探すとかなり見付かりますよ。
CGI、DB接続、GUI、UTF-8、アルゴリズム色々など有ます。
0131デフォルトの名無しさん
2009/07/05(日) 15:57:43これは文法の慣習みたいなものかなと思うんですがどうなのかなぁと。
リストを受け取って何かを返す関数の場合、リストの要素が組やレコードだと
match文の中にmatch文を書くことがありますが、match文ではなく直接パターンマッチさせる書き方の方が
良いのでしょうか?
>>83
vmwareを使ってxp上でubuntuを動かして、ocaml勉強してます。
0132デフォルトの名無しさん
2009/07/05(日) 16:48:01質問をするときはサンプルコードを示したほうが回答してもらいやすいよ。
この文章だと
>match文ではなく直接パターンマッチさせる書き方の方が良いのでしょうか?
あたりがわかりづらいと思われ。
0133デフォルトの名無しさん
2009/07/05(日) 17:28:04kekkonっていう関数で、anataというレコードが要素のリストを引数にして
条件に合う人数を返すとかいう場合に・・・
let rec kekkon anata = match anata with
[] -> 0
| first :: rest -> (match first with
{name = n; toshi = t; syunyu = s; tyotiku = t; sisan = s; youshi = y}
-> 0
とかと書かずに、以下のように書くほうがいいのかなぁという質問です。
let rec kekkon anata = match anata with
[] -> 0
| {name = n; toshi = t; syunyu = s; tyotiku = t; sisan = s; youshi = y} :: rest ->
0134デフォルトの名無しさん
2009/07/05(日) 17:44:47お好きな方を。ただ、
let rec kekkon anata = match anata with
は
let rec kekkon = function
の方が簡潔。
0135デフォルトの名無しさん
2009/07/05(日) 17:46:330136デフォルトの名無しさん
2009/07/05(日) 18:49:38このサンプルコードのようにレコードであれば直接アクセスするっていう手も
あるよ。タプルの場合は状況にもよるけど2番目の方法が多いんじゃないかな。
0137デフォルトの名無しさん
2009/07/06(月) 09:38:23pattern match でワザワザ意味不明な変数に束縛するスタイルはおかしい。
そんなことするから s が二回束縛されてるヨ。
136 の言うように r.name とかでアクセスするほうが普通。
0138デフォルトの名無しさん
2009/07/10(金) 16:02:51ttp://en.wikipedia.org/wiki/VList
のVlistというものを見つけたのですが、これはリストを使った
動的配列のようなものでしょうか。(英語が苦手のためよくわかりませんでした)
また、OCamlで書くとどのようになるのでしょうか。
分かる方がいたら教えてください。
0139デフォルトの名無しさん
2009/07/10(金) 20:09:46答えが欲しいの?それとも一緒に考えてほしいの?
Okasaki には載ってないね。
0140(* 〜 *)
2009/07/10(金) 22:04:04英語が読めなくても図は見えますよね。
構造はこんな感じでいいんじゃないの(図のまんま)。
type 'a vlisti = VLNil | VLCel of 'a vlisti * int * 'a array
type 'a vlist = 'a vlisti * int
操作は自分で考えませう。
0141デフォルトの名無しさん
2009/07/10(金) 22:38:27ありがとうございます。コードのおかげでなんとなくですが
イメージできました。(とはいってもこのデータ構造が
どんな風にありがたいのかは、まだ理解できてはいないのですが・・・)
0142139
2009/07/11(土) 08:49:39type 'a vlisti = VLNil | VLCel of 'a vlisti * int * 'a option array
のほうが良いです。
140 だと埋まって無いトコを埋める値が必要ですね。(Obj.magic 0 などで埋めるのはダメ絶対。)
0143デフォルトの名無しさん
2009/07/12(日) 20:12:390144143
2009/07/12(日) 20:52:010145デフォルトの名無しさん
2009/07/16(木) 08:02:09微妙にctagsとオプションが違ったりするのがウザかったんだ
0146デフォルトの名無しさん
2009/07/23(木) 08:24:190147デフォルトの名無しさん
2009/07/23(木) 09:00:30http://groups.google.com/group/fa.caml/browse_thread/thread/cc13807fa7204874/91529afa62a52640
0148デフォルトの名無しさん
2009/07/25(土) 19:43:01(('a -> 'b) -> 'a -> 'b) -> 'a -> 'b = <fun>
int -> int = <fun>
で型だけを指定して変数を宣言することはできますか?
0149デフォルトの名無しさん
2009/07/25(土) 23:52:22というか何がやりたいのか全くわからん
0150デフォルトの名無しさん
2009/07/26(日) 00:07:080151デフォルトの名無しさん
2009/07/26(日) 00:07:510152デフォルトの名無しさん
2009/07/26(日) 20:13:20fun (x:('a->'b)->(z:'a->'b)) z -> z;;としたところ
- : (('a -> 'b) -> z:'a -> 'b) -> 'c -> 'c = <fun>
のように受理されましたが、3つのうちの最初、z:'aのz はどういう意味があるのか
わかりません。
fun (x:('a->'b)->(z:'a->'b)) -> z;;
としてもzは拘束されていないようですし。
0153148
2009/07/26(日) 21:13:50宣言できるということですよね?やりかたを教えていただけますか?
0155デフォルトの名無しさん
2009/07/26(日) 22:59:56ただ、関数の引数などにアノテーションすることで
関数の定義範囲を狭めることは出来る
普通の定義
let f x = x;;
型全体
let f x : int = x;;
let f x : int ->int = x;;
引数
let f (x:int) = x;;
let f (x:int->int) = x;;
>>148の上の型は、これを使って
Yコンビネータの型をint->intで制限したもの
0156デフォルトの名無しさん
2009/07/26(日) 23:00:460157デフォルトの名無しさん
2009/07/27(月) 10:29:45背景説明無しに、間違った用語で質問されても答えられません。
逆に説明があれば、多少間違っていても回答者の方で正しく解釈できます。
148 だけだとホントに意味不明だが 153 からすると、C における int x;
の様に「変数を宣言」できるか、というのが質問の意図だと思いますが、
ML では値の無い「識別子の束縛」は出来ません。
154、お前は未来に向けて話しているのか。
>>152
z:'a の z は識別子ではなくラベルです。後の z とは関係ありません。
文法をちゃんと確認して、ラベル付き引数の解説を読んでください。
0158デフォルトの名無しさん
2009/07/28(火) 12:36:020159デフォルトの名無しさん
2009/07/29(水) 00:57:410160デフォルトの名無しさん
2009/07/29(水) 13:23:33ありがとうございます。Yコンビネータのようなものを作ろうとしていました。
非常に参考になりました。
>>154が回答に感謝しているのは
>>150の、出来る、が回答になっていると思ったからなのですが。
0161デフォルトの名無しさん
2009/07/29(水) 21:32:04と
Yコンビネータを定義できる
は100光年くらい離れてる気がする
0162デフォルトの名無しさん
2009/08/15(土) 12:47:34(3///5) == [3;4;5] みたいな感じ。
演算記号は何が適当ですか?
0163デフォルトの名無しさん
2009/08/15(土) 15:34:300164デフォルトの名無しさん
2009/08/15(土) 17:40:51List.iter print_int (1--100)
とかですか? いいですね。見やすいです。
0165デフォルトの名無しさん
2009/08/22(土) 15:26:49OCamlの標準ライブラリに無いものは自分で実装しているのですが、SMLとの
コンパチを取るライブラリなどがあったりするのでしょうか?
0166165
2009/08/22(土) 22:50:51のことが出来るのですが、OCamlではUnixのmakeを使うのが普通なのでしょうか?
OCamlのドキュメントではmakeを使った例が書いてありました。
それとも、omakeというものがあるようですが、これを使うのが今時のやり方で
しょうか。
0167デフォルトの名無しさん
2009/08/22(土) 23:24:330168デフォルトの名無しさん
2009/08/23(日) 21:30:22http://www.inria.frは普通に繋がるだけに。
0169デフォルトの名無しさん
2009/08/24(月) 09:06:37OCaml の stdlib は「標準ライブラリ」にあらず、 OCaml 自身をコンパイル
するために最低限必要な関数を集めただけと考えたほうが幸せです。
「次世代」標準ライブラリ候補として Extlib, OCaml Batteries Included, Jane Street Core
などありますからそれのウチ好きなのを使ってください。(Batteries は Extlib を内包しているはず)
ビルドは make か OCaml 付属の ocamlbuild か omake か、別に何でも良いんじゃない?
- GNU make : どこにでもある。他でも使える。枯れてる。
- ocamlbuild : OCaml に付属。全く使えない。
- omake : 超強力、普通インストールされていない。強力過ぎて一線を超えた使いかたが難しい。
0170165
2009/08/24(月) 23:26:43ありがとうございます。
ExtLib, Batteriesの双方に同じ名前のモジュールが含まれていたので疑問に思って
いたのですが謎が解けました。SML Basis Libraryにあるような関数は、名前違いで
大体ExtLibでサポートされているようで安心しました。
ビルドツールはGNU makeを主に使ってきたのですが、omakeはファイル更新の
チェックが素晴らしいようなので、omakeを使ってみます。
0171デフォルトの名無しさん
2009/08/25(火) 11:41:33追加インストールとか面倒だし
0172デフォルトの名無しさん
2009/08/25(火) 12:34:520173デフォルトの名無しさん
2009/09/01(火) 14:33:390174デフォルトの名無しさん
2009/09/01(火) 20:45:28おもろかったけどgolfとかコンパイラ改造とかネタが裏街道過ぎて
実用志向のユーザー増えねえだろこれじゃ、とか思った
0175デフォルトの名無しさん
2009/09/01(火) 22:15:16Golfの話は意外と参考になった。演算子定義周りとか、普段あまり使わないから。
演算子によって優先順位が固定されているの勉強になった。
あとObj.magic。あれは反則技だろw
0176デフォルトの名無しさん
2009/09/07(月) 05:40:380177デフォルトの名無しさん
2009/09/09(水) 17:30:370178デフォルトの名無しさん
2009/09/09(水) 17:32:57$ ./configure
$ make world
・・・
gcc -o ocamlrun \
prims.o libcamlrun.a -lm
libcamlrun.a(main.o):main.c:(.text+0x26): undefined reference to `caml_expand_command_line'
libcamlrun.a(sys.o):sys.c:(.text+0x4ea): undefined reference to `caml_win32_random_seed'
libcamlrun.a(startup.o):startup.c:(.text+0x936): undefined reference to `caml_signal_thread'
libcamlrun.a(signals_byt.o):signals_byt.c:(.text+0x46): undefined reference to `caml_win32_signal'
libcamlrun.a(signals_byt.o):signals_byt.c:(.text+0xab): undefined reference to `caml_win32_signal'
collect2: ld returned 1 exit status
・・・
0179デフォルトの名無しさん
2009/09/09(水) 18:09:02OCaml の mingw のビルドを参考にしたら?
JoCaml には付いて無いけど OCaml の README.win32 に書いてある。
0180デフォルトの名無しさん
2009/09/09(水) 20:36:00ありがとうございます。
cp config/m-nt.h config/m.h
cp config/s-nt.h config/s.h
cp config/Makefile.msvc config/Makefile
config/Makefileの中身のOTHERLIBRARIESからlabltkを削除し、PREFIXをインストールしたいディレクトリに変更し、
make -f Makefile.nt world
を実行したまでは良かったのですが、
make[1]: *** No rule to make target `win32.c', needed by `win32.o'. Stop.
make[1]: Leaving directory `/d/tmp/jocaml-3.11.1/byterun'
make: *** [coldstart] Error 2
と出てストップしてしまいます。
jocaml-3.11.1にはwin32.cが入っていないようですが、これは不具合ということでよろしいでしょうか。
0181デフォルトの名無しさん
2009/09/09(水) 21:23:000182179
2009/09/09(水) 21:31:19同じバージョンの OCaml から引っ張って来たら運が良かったらビルドできるかも知れないが、
こんなトコで聞くくらいだったら JoCaml の人に win32.c 無いって聞く方がいいんじゃない?
0184デフォルトの名無しさん
2009/09/09(水) 22:30:08それで動く保証はないけど
0185デフォルトの名無しさん
2009/09/09(水) 22:31:050186デフォルトの名無しさん
2009/09/09(水) 22:34:59あ、Makefile.mingwでやりました。
上のはコピペで修正し忘れていました。
0187デフォルトの名無しさん
2009/09/09(水) 22:36:17JoCamlでアプリを書くつもりなので、Windowsでないとダメなんですよ。
0188デフォルトの名無しさん
2009/09/09(水) 22:47:01イバラの道じゃないかねー。Luc に聞かんと誰もわからんよ。
ちなみに win32.c は jocaml のレポから随分前に消えてる。
0189デフォルトの名無しさん
2009/09/09(水) 22:49:38We distribute JoCaml as sources. Those sources are for Unix systems
と書いてあるが、これは読んだのか?
0190デフォルトの名無しさん
2009/09/11(金) 20:25:19リスト内包標記とか where 節とか open Module in とかあってびびった
使ってる人いる?
0191デフォルトの名無しさん
2009/09/12(土) 11:44:43open in はオーバーヘッドを理解してれば使える。
0192デフォルトの名無しさん
2009/09/17(木) 12:29:490193デフォルトの名無しさん
2009/09/17(木) 12:56:31let module M' = struct open M let v = e end in v
に変換されるので、ブロックを一つ作る。
普通はたいしたこと無いが、再帰関数中で open M in するのは少し考え物だ。
0194デフォルトの名無しさん
2009/09/17(木) 13:09:21let rec f x = open M in e (* e 中に f の再帰呼出あり *)
とか書くと f の呼出しごとにブロックが出来て、時間とメモリを食う。
0195デフォルトの名無しさん
2009/09/17(木) 13:13:490196デフォルトの名無しさん
2009/09/19(土) 14:39:440197デフォルトの名無しさん
2009/09/21(月) 22:22:320198デフォルトの名無しさん
2009/10/18(日) 14:08:130199デフォルトの名無しさん
2009/10/31(土) 11:31:30http://www.cs.tufts.edu/~nr/comp150fp/archive/richard-bird/sudoku.pdf
0200デフォルトの名無しさん
2009/11/09(月) 04:34:20実際に読んだ方いましたら、感想を聞かせてください。
0201デフォルトの名無しさん
2009/11/09(月) 23:09:48> 実際に読んだ方いましたら、感想を聞かせてください。
たった今、ゴミだからいらないという人にもらいました。確かにゴミです。ネタとしてならどうぞ。
0202デフォルトの名無しさん
2009/11/10(火) 00:11:27そこについては別にひどくは無かったと思ったよ。
0203デフォルトの名無しさん
2009/11/10(火) 04:23:58どのページを開いても何かツッコミどころがあるというある意味貴重な本。
値段も安くはないし絶対にお薦めしない。
0204デフォルトの名無しさん
2009/11/10(火) 21:20:02http://rainyday.blog.so-net.ne.jp/2006-11-25
http://shuns.sakura.ne.jp/?%BD%B5%B5%AD%2F2006-4-
これ出た当時はオライリーのフランス語のやつ(当時すでに絶版)以外ではこれしか本がなかったけど
日本語書籍がいくつもある今買う価値はないと思いますね。
0205デフォルトの名無しさん
2009/11/12(木) 00:57:52継続してれば、有望だと思ったんだけどな・・・ > SML#
0206デフォルトの名無しさん
2009/11/14(土) 00:34:44apressの書籍ってほとんどハズレだと思う
これもハズレだったよ
0207デフォルトの名無しさん
2009/11/14(土) 02:34:17http://namidame.2ch.net/test/read.cgi/hidari/1257990721/
0208デフォルトの名無しさん
2009/11/17(火) 02:45:270209デフォルトの名無しさん
2009/11/17(火) 13:34:53しかし,パラメータの値には様々な見解がある.
N = R_s * f_p * n_e * f_l * f_i * f_c * L
N:道路に落ちている軍手の数
R_s:軍手の年間生産量
f_p:軍手を使用する作業の割合
n_e:軍手を屋外で使用する割合
f_l:軍手が使用される作業の割合
f_i:軍手を着脱する回数
f_c:軍手の移動距離
L:道路上の軍手の寿命
0210デフォルトの名無しさん
2009/11/17(火) 17:11:18誰か研究してくれ
0211デフォルトの名無しさん
2009/11/17(火) 23:27:170212デフォルトの名無しさん
2009/11/17(火) 23:53:580213デフォルトの名無しさん
2009/11/18(水) 00:15:00ほらよ。
N = R_s * f_p * n_e * f_l * f_i * f_c * L
N:道路に落ちているパンティーの数
R_s:パンティーの年間生産量
f_p:パンティーを使用する作業の割合
n_e:パンティーを屋外で使用する割合
f_l:パンティーが使用される作業の割合
f_i:パンティーを着脱する回数
f_c:パンティーの移動距離
L:道路上のパンティーの寿命
0214デフォルトの名無しさん
2009/11/18(水) 01:10:3840代未満はパンツかショーツと呼ぶ。
0215デフォルトの名無しさん
2009/11/18(水) 01:23:51ウーロン知らないの?
0216デフォルトの名無しさん
2009/11/18(水) 02:10:39例:
「お茶」→「俺は紅茶が飲みたい。お茶といえば緑茶じゃなくて紅茶でしょ。緑茶とかジジくさいし。」
0217デフォルトの名無しさん
2009/11/18(水) 02:30:26類似定理に「キャロライン洋子を知っている人は1969年以前生まれ」がある。
0218デフォルトの名無しさん
2009/11/18(水) 03:07:49N = R_s * f_p * n_e * f_l * f_i * f_c * L
N:道路に落ちているブラジャーの数
R_s:ブラジャーの年間生産量
f_p:ブラジャーを使用する作業の割合
n_e:ブラジャーを屋外で使用する割合
f_l:ブラジャーが使用される作業の割合
f_i:ブラジャーを着脱する回数
f_c:ブラジャーの移動距離
L:道路上のブラジャーの寿命
0219デフォルトの名無しさん
2009/11/18(水) 03:16:530220デフォルトの名無しさん
2009/11/18(水) 03:50:1072年生まれでびっくり日本新記録を見ていた私はなんですか?
0221デフォルトの名無しさん
2009/11/18(水) 12:01:0672年生まれなら13歳中一まで見れていたことになる。
特別なことはなにもないと思うが。
マッハGoGoGoとか鉄腕アトムの第一作目をリアルタイムに見ていたとかいうなら驚愕ものだが。
0222デフォルトの名無しさん
2009/11/18(水) 19:34:270223デフォルトの名無しさん
2009/11/18(水) 20:22:40最近はむしろ尊敬するようになってきた。
なんつーか、歳を重ねるってのはそれだけで立派だよ。
対して俺はゆとりに「この昭和生まれが」と言われてショックを受けた
0224デフォルトの名無しさん
2009/11/18(水) 20:26:52rougai
0225デフォルトの名無しさん
2009/11/18(水) 21:29:42そうは思わない
> 最近はむしろ尊敬するようになってきた。
ああ・・・ついにお前も老害の仲間入りか。
人間というのは自分の置かれた環境や立場によって考え方を変える生き物だというだけのこと。
お前が老害ジジイを擁護するようになったということは、
老害扱いされる時期がもうすぐ目の前に来ている証拠なんだよ。
たしか60歳以上の老人たちは日本が持っているカネの55%を持っているんだよな。
そしてそのカネを何に使うかというアンケートによると、
がんばってきた自分へのご褒美に贅沢するために使うのだそうだ。
若者が苦しんでいるときにそんなことを許していいわけがないだろ。
老人を過剰に保護するのをやめても老人は困らないし、
財源確保のために老人たちから搾り取ればいいと思う。
0226デフォルトの名無しさん
2009/11/18(水) 21:37:01定年を設けている企業や官公庁が大半だと思うけど、それって年齢差別だよね。
60歳でもまだまだ働ける人がほとんどなのに定年で辞めさせるのはどうかと思う。
そうする代わりに、経営者に自由に解雇する権利を与えて、年功上列・終身雇用も撤廃して、
終身雇用に安住している無能なやつ(老害)をどんどん解雇していけばいいと思う。
無能な奴は一生平社員の単純労働でこき使えばいいよ。
長い間単純労働してるからといって才能の無い奴を無理に昇進させる必要もないと思う。
0227デフォルトの名無しさん
2009/11/18(水) 21:41:570228デフォルトの名無しさん
2009/11/18(水) 21:42:48歳を重ねるだけで得られるようなものなら誰でも手に入るから価値は無い。
0229デフォルトの名無しさん
2009/11/18(水) 21:45:57解雇すればいいのに、こき使うの?
0230デフォルトの名無しさん
2009/11/18(水) 21:49:56もっと若者と同じように扱えばいいのにね。
具体的にどこか体が故障している人を障害者認定して、
障害者として文化的な生活をおくるために補助をするなら分かるけど、
高齢者だからという理由だけで保護するのは過保護というものじゃないかな。
0231デフォルトの名無しさん
2009/11/18(水) 21:52:310232デフォルトの名無しさん
2009/11/18(水) 21:53:24団塊世代は頭が鈍くて経験も役に立たないし物事を計画的にするのも下手だし散らかすのだけは一流で後片付けのことは微塵も考えないゴミなんだよなぁ
0233デフォルトの名無しさん
2009/11/18(水) 21:53:31> がんばってきた自分へのご褒美に贅沢するために使うのだそうだ。
金が回るならいいことじゃないか
0234デフォルトの名無しさん
2009/11/18(水) 21:54:240235デフォルトの名無しさん
2009/11/18(水) 21:56:33ところが、使った分が戻っていくのが世にも奇妙な現象
0236デフォルトの名無しさん
2009/11/18(水) 21:57:380237デフォルトの名無しさん
2009/11/18(水) 22:02:41ダメ、ジジババはコンピュータ音痴だから。
0238デフォルトの名無しさん
2009/11/18(水) 22:17:02南無阿弥陀仏
0239デフォルトの名無しさん
2009/11/25(水) 12:41:380240デフォルトの名無しさん
2009/11/26(木) 15:44:50おいしいところだけ食べてトンズラとかマジきめえw
自分たちの責任を後世に押し付けて、自分は今まで楽しく稼いだお金で楽しく老後を過ごす予定なのか?
そんなことが許されるわけがない。
世の中みんなが辛いと思っているんだから自分だけ良い思いをしようとするなんて許されるわけがない。
団塊世代は身勝手だ。
搾取されるべきは団塊世代だ。
金があるんだから搾取してもかまわないだろ?
0241デフォルトの名無しさん
2009/11/26(木) 16:25:40特にJALやJRや某新聞社の労組
それから日教組
こいつらが日本のまじめな生産者の利益を貪ってる
0242デフォルトの名無しさん
2009/11/26(木) 16:27:140243デフォルトの名無しさん
2009/11/26(木) 16:47:17会社は正社員じゃなくて派遣を使いたがる
派遣ピンハネ業だけが儲かる
0244デフォルトの名無しさん
2009/11/26(木) 16:52:240245デフォルトの名無しさん
2009/11/26(木) 16:53:19正社員を派遣すればいいんじゃん
0246デフォルトの名無しさん
2009/11/26(木) 18:11:29コピペした奴が自分で反応してんのか
どっちにしてもアホだ
0247デフォルトの名無しさん
2009/11/26(木) 18:58:16面倒だから経営も外注するか。
労組嫌ってるやつは公務員か?死ねよ
0248デフォルトの名無しさん
2009/11/26(木) 19:03:430249デフォルトの名無しさん
2009/12/06(日) 22:09:27欧州のどこだかは、派遣使うとそれだけ割高になるような法律になってるとか
聞いたことある。
0250デフォルトの名無しさん
2009/12/07(月) 00:49:50プログラマの派遣なら、正社員の派遣が主流じゃないか?
>>249
法律なんか作らなくても、市場原理に任せておけば派遣のほうが高くなる。
レンタルとリースのどっちが割高かってこと。
むしろ、法律によって市場を歪めているのが諸悪の原因。
0251デフォルトの名無しさん
2009/12/31(木) 15:29:23どの法律のこと?
0252デフォルトの名無しさん
2009/12/31(木) 19:26:500253デフォルトの名無しさん
2009/12/31(木) 21:53:250254デフォルトの名無しさん
2010/01/03(日) 16:49:170255デフォルトの名無しさん
2010/01/07(木) 21:35:11curl-helper.c
主に「dereferencing pointer to incomplete type」というエラーが大量に出ます。
どうすればいいのでしょうか。
./configやlibcurlのインストールなどは済ませています。
環境はMSYS + MinGW、Windows 7です。
0256デフォルトの名無しさん
2010/01/08(金) 18:36:460257デフォルトの名無しさん
2010/01/08(金) 18:43:340258デフォルトの名無しさん
2010/01/09(土) 03:51:07MinGWは最新のものを入れています。
ところで、http://jocaml.inria.fr/ や http://caml.inria.fr/ が落ちているのですが。
0259デフォルトの名無しさん
2010/01/09(土) 04:31:29ここの例通りにCでOcamlのモジュール使おうと試してるんだけどうまくいかない。
最後の手順の cc -o prog main.c mod.a -lcurses で詰まっています。
mod.a(startup.o):startup.c:(.text+0x9e): undefined reference to `__lseeki64'
mod.a(startup.o):startup.c:(.text+0x240): undefined reference to `__lseeki64'
mod.a(startup.o):startup.c:(.text+0x2e7): undefined reference to `__lseeki64'
mod.a(startup.o):startup.c:(.text+0x93b): undefined reference to `__beginthread'
mod.a(sys.o):sys.c:(.text+0x7): undefined reference to `__errno'
mod.a(sys.o):sys.c:(.text+0xf7): undefined reference to `__errno'
mod.a(sys.o):sys.c:(.text+0x101): undefined reference to `__errno'
mod.a(str.o):str.c:(.text+0x30f): undefined reference to `__imp___pctype'
mod.a(str.o):str.c:(.text+0x32c): undefined reference to `__isctype'
こんなエラーが大量に出る。
libcamlrun.aが怪しいと思うのだけれどどうすればいいかわからない。
環境はXPでCygwin Ocamlは3.10.2
Cygwinでocamlc -c modwrap.cすると何故かアクセスが拒否されるので modwrap.cとmod.mlのコンパイルはMinGWでやりました。
0260デフォルトの名無しさん
2010/01/09(土) 08:51:21Cランタイムのシンボルを見つけられてない、ということで
>Cygwinでocamlc -c modwrap.cすると何故かアクセスが拒否されるので modwrap.cとmod.mlのコンパイルはMinGWでやりました。
が怪しい。
この部分MinGWとCygwinの互換性はあるの?Cygwin知らんけど、全部-mnocygwinならどうだろう。
0261デフォルトの名無しさん
2010/01/09(土) 09:28:15>この部分MinGWとCygwinの互換性はあるの?
エラーが出てるのは正に MinGW と Cygwin で互換性のなさそうな部分だね。
>259
>何故かアクセスが拒否される
modwrap.c を Windows ネイティブのアプリで編集していたりすると発生する場合もあるので
・Cygwin アプリで編集する
・mkpasswd とか使って /etc/passwd を見直してみる
・とりあえず chown / chmod してみる
・ACL 周りの設定を変えてみる(mount とか環境変数 CYGWIN とか)
あたりはどうだろ。
0262デフォルトの名無しさん
2010/01/11(月) 21:48:13>>261
助言ありがとうございます。
レスを頼りにいろいろ試してみましたが、だめでした。
OcamlもCygwinも使ってまだ日が浅いので大事なところを見落としているのかもしれません。
今忙しいのであまり時間が取れないのですが、Cygwinで揃えてまたいろいろと試してみようと思います。
本当にありがとうございました。
0263デフォルトの名無しさん
2010/02/06(土) 21:54:140264デフォルトの名無しさん
2010/02/19(金) 00:01:290265デフォルトの名無しさん
2010/02/19(金) 23:52:140266デフォルトの名無しさん
2010/02/22(月) 10:15:160267デフォルトの名無しさん
2010/02/26(金) 18:43:330268デフォルトの名無しさん
2010/03/18(木) 02:27:030269デフォルトの名無しさん
2010/03/22(月) 23:27:080270デフォルトの名無しさん
2010/03/22(月) 23:32:10ホントだ。ご冥福をお祈りします。
ML は勉強していて楽しかったです。
0271デフォルトの名無しさん
2010/03/28(日) 22:50:27やってるんですが、著者のサポートサイトに書いてあるように
やっても、未だに日本語の表示が出来ません。
ttp://pllab.is.ocha.ac.jp/~asai/book/Linux.html
環境はWinXPのVMPlayer上のDebian(lenny)でやってます。
端末でインタープリタ走らせてる場合も、Emacs上でtuareg-
modeでやってる場合も文字コードが表示されてしまいます。
助けてけろ〜
0272デフォルトの名無しさん
2010/03/28(日) 23:42:030273デフォルトの名無しさん
2010/04/09(金) 23:58:560274デフォルトの名無しさん
2010/04/11(日) 20:56:52奥さん亡くなった三日後に心筋梗塞か。
0275デフォルトの名無しさん
2010/04/11(日) 21:10:030276デフォルトの名無しさん
2010/04/12(月) 22:51:230277デフォルトの名無しさん
2010/04/21(水) 21:04:50signatureを受け取ってstructureを返すfunctor Aと、
signatureを受け取ってsignatureを返すfunctor Bを定義したとします。
signature CにAとBを適用したものをA(C), B(C)としたとき、
A(C)にB(C)を適用したstructureはどうしたら使えますか?
0278277
2010/04/21(水) 21:06:260279277
2010/04/21(水) 22:56:410280デフォルトの名無しさん
2010/04/22(木) 01:34:18受け取るのも返すのstructureだけだと思ってた
0281デフォルトの名無しさん
2010/04/22(木) 01:38:21http://caml.inria.fr/pub/docs/manual-ocaml/manual019.html#toc67
やっぱりfunctorがsignatureを受け取れるようには見えないなぁ
0282デフォルトの名無しさん
2010/04/25(日) 12:26:40'a * 'bの値を受け取り、型'aと'bが等しいか否かを判定する関数はo'camlで書けますか?
0283デフォルトの名無しさん
2010/04/25(日) 22:33:070284デフォルトの名無しさん
2010/04/25(日) 22:54:260285デフォルトの名無しさん
2010/04/26(月) 00:03:13何がしたいのか分からないけど
OCamlでは型情報は実行時には残っていないので
そういう型を扱うプログラムは一切かけないとおもう
0286デフォルトの名無しさん
2010/04/26(月) 21:09:56なんか、これが凄くアダになってるように思えるのだが
0287デフォルトの名無しさん
2010/04/27(火) 20:51:340288デフォルトの名無しさん
2010/04/29(木) 20:07:48…
以下の新規パッケージがインストールされます:
camlp4{a} ledit{a} libdrm2{a} libgl1-mesa-glx{a} libpthread-stubs0{a}
libpthread-stubs0-dev{a} libx11-dev{a} libxau-dev{a} libxaw7{a}
libxcb-xlib0-dev{a} libxcb1-dev{a} libxdmcp-dev{a} libxext-dev{a}
libxi-dev{a} libxmu6{a} libxpm4{a} libxtst6{a} libxv1{a} libxxf86dga1{a}
libxxf86vm1{a} ocaml ocaml-base{a} ocaml-base-nox{a} ocaml-interp{a}
ocaml-nox{a} tcl8.4{a} tk8.4{a} x11-utils{a} x11proto-core-dev{a}
x11proto-input-dev{a} x11proto-kb-dev{a} x11proto-xext-dev{a} xbitmaps{a}
xterm{a} xtrans-dev{a}
0 個のパッケージを更新、 35 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。
29.4MB のアーカイブを取得する必要があります。 展開後に 97.0MB のディスク領域が新たに消費されます。
(#^ω^)ピキピキ
0289デフォルトの名無しさん
2010/04/29(木) 20:14:14ocaml-nox
0290デフォルトの名無しさん
2010/04/30(金) 12:32:470291デフォルトの名無しさん
2010/05/01(土) 16:43:510292デフォルトの名無しさん
2010/05/02(日) 01:19:010293デフォルトの名無しさん
2010/05/05(水) 04:16:180294デフォルトの名無しさん
2010/05/05(水) 07:24:38「'a.」は「任意の型パラメータを'aとし、その'aついて...(for all)」の意味
例えば、
type 'a t = { e : 'a }
は'aを型パラメータに取るけど、
type 'a t = { e : 'a; p : 'b. 'b list }
とすると、任意の型'bをパラメータに持つ型をレコードの要素にできる
もちろん
type 'a t = { a : 'a; p : 'b list }
は'bがunboundだからエラー
0295デフォルトの名無しさん
2010/05/05(水) 15:33:12ありがとうございます
0296デフォルトの名無しさん
2010/05/15(土) 22:35:32はけるSML#のリリースは待ち遠しかった。
ただ、欲を言うと、レコード拡張も言語としてサポートして欲しかった。
0297デフォルトの名無しさん
2010/05/16(日) 08:50:49すげえ、日常的にか。仕事に使ってるの?
>ただ、欲を言うと、レコード拡張も言語としてサポートして欲しかった。
レコード拡張って?
0298デフォルトの名無しさん
2010/05/17(月) 17:27:310299デフォルトの名無しさん
2010/05/18(火) 22:20:33小規模な数値計算をしているだけで、すごいことはしていません。
Fortranで十分ですが、いくつかの部品を定義して、NJの対話環境
で評価することで、試行錯誤できて重宝してます。
レコードの拡張
連結と言うべきだった。
{a=1,b=2}#{c=3}
val it={a=1,b=2,c=3}
ができると嬉しい。
0300デフォルトの名無しさん
2010/05/21(金) 01:51:26ocaml.vimやomlet.vimより
いいものありませんか?
0301デフォルトの名無しさん
2010/05/21(金) 21:02:03inの前で改行すべきか?
連続するletはインデントすべきか?
などなど
0302デフォルトの名無しさん
2010/05/22(土) 23:36:50今のところ連続するletもinの後も
インデントしないようにしています。
ただ、こう書きたいという思いがあっても
Vimのインデントファイルでは
うまくいかないことがあって困ります。
ユーザーの多そうなEmacsを使った方が
いいのかもしれません。ま、それを
言ったら関数型言語もHaskellということ
になるかもしれませんが…
0303デフォルトの名無しさん
2010/06/04(金) 16:33:24let plus x y = x + y があるとき
xより先にyに代入する方法はあるますか?
0304デフォルトの名無しさん
2010/06/04(金) 20:40:08すでに、y = aの代入が決まっているときは、
(fun x -> plus x a)
まだのときは、
(fun y -> fun x -> plus x y)
を使う。
※SML使いなので、構文上の間違いはあるかもしれぬ。
0305デフォルトの名無しさん
2010/06/04(金) 20:44:13列挙型を定義するときに、
datatype X = X1 | X2 | X3 | ...
とするか
type X = int
val X1 = 1
val X2 = 2
...
とするかで悩んでしまう。最初は、vector (ランダムアクセス)を使わない
見込みだったのだが、必要になったときのことを心配してしまう。
0306デフォルトの名無しさん
2010/06/04(金) 22:34:460307デフォルトの名無しさん
2010/06/04(金) 22:41:07……俺ならObj.magicしちゃうな
0308デフォルトの名無しさん
2010/06/04(金) 22:44:58これだった。あんまり突っ込んだこと書かれてなかったな。でもこういう話じゃないの?
0309デフォルトの名無しさん
2010/06/05(土) 18:55:54ありがとうございます。
0310デフォルトの名無しさん
2010/06/05(土) 23:46:13ありがとうございます。そうです、O(1)で整数に変換できるかを心配していました。
0311デフォルトの名無しさん
2010/06/10(木) 00:10:32DEFINEマクロ使った方がいいんじゃないかなぁ。あ、OCamlの場合だけど。
(* compile with -pp "camlp4orf" *)
DEFINE A = 1
let _ = print_int A
0312デフォルトの名無しさん
2010/06/14(月) 19:50:39Ocamlマクロ使えましたね。いいなぁ〜
0313デフォルトの名無しさん
2010/06/14(月) 19:54:03あるけど、どの程度が許容範囲なんだろう。
与えられたリストの部分和を要素とするリストを返す関数を書いてみると、
破壊的代入を使ったバージョンが一番短く直観的に思う。
fun series xs =
(fn s => map (fn i => i + !s before s := !s + i) xs) (ref 0)
fun series2 xs =
(rev o #2) (foldl (fn (i,(s,ys)) => (i+s,(i+s)::ys)) (0,nil) xs)
fun series3' s (i::is) = (i+s) :: series3' (i+s) is
| series3' s nil = nil;
val series3 = series3' 0
関数プログラマ的には、どれがいいのだろう。
(もっといい書き方もあるかもしれない)
0314デフォルトの名無しさん
2010/06/14(月) 19:58:310315デフォルトの名無しさん
2010/06/14(月) 21:34:29http://www.smlnj.org/doc/basis/pages/list.html
には
map f l
applies f to each element of l from left to right, returning the list of results.
と書かれているが、"from left to right"を副作用を持つfを考慮して、そう書いているのか
は不明。
0316デフォルトの名無しさん
2010/06/16(水) 05:25:03効率気にしないなら下のようにも.
fun series nil = nil
| series (h::t) = h :: map (fn x => x + h) (series t)
効率を気にするなら,series3がいいと思った.
refを使うと現在の変数の状態を気にする必要があって大変.
series2はやってることはわかったけど,コードがなんとなく見づらい.
0317デフォルトの名無しさん
2010/06/16(水) 12:11:01refが大変で、引数変数が大変でないと思う辺り、関数型言語プログラマだなあ。
俺はまだそこまでの境地には達してないや
0318デフォルトの名無しさん
2010/06/16(水) 18:09:000319デフォルトの名無しさん
2010/06/16(水) 20:47:50mapAccumL で満足しそうになっていた
0320デフォルトの名無しさん
2010/06/17(木) 21:08:40ひさしぶりに何か美しいものを見た気がします。
>> 318,319
HaskellのData.Listにある関数ですね。GHCは入れてあるが、ほとんど使って
いないので、知らなかったのですが、いっぱい関数が用意されてますね。
0321デフォルトの名無しさん
2010/06/18(金) 19:16:35(tar ballのToDoに書いてあった)
ノード内並列には使えない。残念。
0322デフォルトの名無しさん
2010/06/18(金) 19:31:430323デフォルトの名無しさん
2010/06/18(金) 20:52:49ありがとうございます。
ここを http://www.polyml.org/Doc.html さらっと見てみましたが、
結構しっかりした実装のようですね。
これは、SML/NJからの移行を検討する価値がある。
他に、
- Windowsプログラミング
- FFIが簡単(のように見える)
が気に入った。
0324デフォルトの名無しさん
2010/06/18(金) 21:45:31lablgtk2とその依存ライブラリを標準で取り込んでくれ〜
0325デフォルトの名無しさん
2010/07/04(日) 19:42:48OOのコンストラクタみたいなの
0326デフォルトの名無しさん
2010/07/05(月) 12:51:06(´・ω・`) うさちゃんピース
0327デフォルトの名無しさん
2010/07/05(月) 15:03:080328デフォルトの名無しさん
2010/07/09(金) 01:03:21module F (A : sig val x : int end) = struct
let _ = print_int A.x
end
このファンクターに適当なモジュールを適用してごらん
0329デフォルトの名無しさん
2010/07/09(金) 22:25:030330名無しさん@そうだ選挙に行こう
2010/07/11(日) 11:47:27\ 丶 i. | / ./ /
\ ヽ i. .| / / /
\ ヽ i | / / /
\
-‐
ー
__ わ た し で す --
二 / ̄\ = 二
 ̄ | ^o^ |  ̄
-‐ \_/ ‐-
/
/ ヽ \
/ 丶 \
/ / / | i, 丶 \
/ / / | i, 丶 \
0331デフォルトの名無しさん
2010/07/23(金) 23:57:35http://www.amazon.co.jp/dp/4756116418
J. D. Ullmanのこの本絶版になってたのか。
11年前に図書館で世話になったときは、面白かった。
0332デフォルトの名無しさん
2010/08/06(金) 17:34:510333デフォルトの名無しさん
2010/08/14(土) 16:35:210334デフォルトの名無しさん
2010/08/16(月) 01:05:070335デフォルトの名無しさん
2010/08/16(月) 01:22:010336デフォルトの名無しさん
2010/08/16(月) 12:57:130337デフォルトの名無しさん
2010/08/21(土) 23:26:49http://ocaml.jp/Chapter%2024%20The%20threads%20library
>threads ライブラリを使用するプログラムは以下のようにリンクしてください:
>ocamlc -thread other options unix.cma threads.cma other files
って書いてあるのに
ocamlc -thread unix.cma threads.cma thread.ml
File "thread.ml", line 7, characters 8-21:
Error: Unbound value Thread.create
Threadはどこにあるんだ・・・
0338デフォルトの名無しさん
2010/08/22(日) 01:37:10なんか既存アプリ壊してるとかあるのかね
>>337
志村ー、"thread.ml"ー
0339デフォルトの名無しさん
2010/08/22(日) 02:53:00圧倒的感謝
悩んでた自分が馬鹿らしい つーか馬鹿だった
0340デフォルトの名無しさん
2010/08/22(日) 02:54:15>>338
0341デフォルトの名無しさん
2010/08/23(月) 01:39:580342デフォルトの名無しさん
2010/08/30(月) 15:11:490343デフォルトの名無しさん
2010/09/19(日) 08:18:17ttp://caml.inria.fr/pub/docs/manual-ocaml/index.html
0344デフォルトの名無しさん
2010/09/19(日) 22:05:300345デフォルトの名無しさん
2010/09/21(火) 22:59:45集合演算を使ったプログラムを書こうとしているのですが、
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?
と上手く動いています。
どのあたりを調べれば良いかのポインタだけでも構いませんので、
解決方法ご存知の方、教えていただけますでしょうか。
0346デフォルトの名無しさん
2010/09/21(火) 23:10:05全然関係無しなんだね。まぎらわしすぎw
解決方法でないレスでゴメソ >>345
0347デフォルトの名無しさん
2010/09/22(水) 02:13:02SML/NJだと自動でライブラリを読み込むようだが,SML#ではそうでないみたいね.
ソースの smlsharp-0.56/smlnj-lib/Util/redblack-set-fn.sml
にRedBlackSetFnが入ってるから,必要なファイル込みでuseすればいいんじゃないかな.
0348345
2010/09/22(水) 21:06:32$prefix/lib/smlsharp/smlnj-lib/Util 以下に各set用のfunctorが
あったので、こちらをuseしてみたところ、
上手く動くようになりました。
ありがとうございます。
sml#ではCM上手く動かないのはやっぱり嫌だなぁ。
なんとかならないものか…
0349デフォルトの名無しさん
2010/09/26(日) 18:45:17ML for the working programmerを読み始めて早速引っ掛かってしまいました。
0350デフォルトの名無しさん
2010/09/28(火) 01:50:380351デフォルトの名無しさん
2010/10/16(土) 00:36:53コンパイルに失敗する
0352デフォルトの名無しさん
2010/10/24(日) 18:34:300353デフォルトの名無しさん
2010/11/10(水) 00:02:31:se nu ai sw=4 ts=4
0354デフォルトの名無しさん
2010/11/10(水) 23:06:49でも無名関数を多用すると桁が足りなくなるので
増やすべきか悩む。横長モニタ買いたくなる。
0355デフォルトの名無しさん
2010/11/11(木) 21:11:38とはいえ、100を超えると読みにくくなるので、適当に折り返すことにしている。
ただ、このコーディングルールに従えばOK、というようなのがないので、
毎回困っている。
0356デフォルトの名無しさん
2010/11/11(木) 21:19:26data label = A | B | C
Unsafe.cast A: int;
Unsafe.cast B: int;
Unsafe.cast C: int;
とすると、それぞれ0,1,2になる。
0357デフォルトの名無しさん
2010/11/11(木) 21:49:53MLは初心者だけど、>>305は(コードの問題ではなく)設計の問題だと思う。
代数構造として、直積(組型やレコード型)と列(リスト型や配列型)は全く別の概念。
コンパイルの前に要素の数が決定できるなら直積を使うべきだし、
実行してみないと決定できないのなら列を使う。あるいは動的なシンボルで
ランダムアクセスしたいならハッシュ型を、更に順序性が必要ならB木型を。
これらすべてはプログラムの設計工程で決定しておくべきもの。
設計工程での不具合をコーディング工程で取り返そうとするのは、よくある過ち。
>>356の解決策というのは、いわゆる「泥縄」的手法。いずれ破綻する。
いくらMLが美しい言語でも、設計が汚ければコードはグチャグチャになるよ。
逆に、設計が適切であれば手続き型言語であっても美しいコードは書ける。
0358デフォルトの名無しさん
2010/11/11(木) 21:54:05Pascal、Modula系からMLやら(その他EiffelやらOberonやら)への流れで、
なぜか列挙型を配列のインデックスに使う機能が捨てられた悲しいね、ってだけの話だ。
0359デフォルトの名無しさん
2010/11/11(木) 22:25:29疑問の答えを考えなさい、と言ってる。
列挙型(特に関数型言語の直和、MLのdatatype定義)というのは、要素を数え上げることで
集合を定義している。いわゆる「内包的定義」だ。集合なのだから、その要素間に順序性は無い。
もし要素間に順序性が求められるのなら、列として(集合とは別に)それら要素を定義する。
そしてそれらの間の関係を写像(関数あるいはハッシュ型などで)させることで対応づける。
こういった考え方(設計技術)無しに、力任せのコーディングテク(技法)で解決しようとするのでは、
(特にMLのような明瞭な型体系を持つ)関数型言語の利点は、全く生きないよ。
型をわずらわしく感じるうちは、いつまでたってもIT土方のままだ。(型定義 = 設計なのに....。)
結果的に「関数型言語を使っても美しい(高品質な)コードは書けなかった。チクショウ騙された。」
という誤解が生まれる。
0360デフォルトの名無しさん
2010/11/11(木) 22:25:48305が既にコーディング工程まで来ているという根拠は?
0361デフォルトの名無しさん
2010/11/11(木) 22:29:03列挙型がインデックスの配列なんて、単にmapの効率的な表現でしかないだろ……。
0362デフォルトの名無しさん
2010/11/11(木) 22:33:39単純に(非常に残念ながら)固定長配列型が採用されなかったからだろうね。
全部可変長配列ならインデックスに演算不可能な型を使えてもしょうがないから。
0363デフォルトの名無しさん
2010/11/11(木) 22:39:12根拠は、>>305が使った「スタイル」と言う言葉。
>>361
>単にmapの効率的な表現でしかないだろ……。
その通り。より正確には「写像の効率的な実装(コード化)」だね。
>>357で書いたのは、実装(コード化)で解決しようとせずに設計に立ち返りなさい、という話。
0364デフォルトの名無しさん
2010/11/11(木) 22:44:09設計どうこうの話で絡む理由がわからんな。
それこそ言語機能の問題でしか無いんだから、実装の詳細もいいとこだろうに。
0365デフォルトの名無しさん
2010/11/11(木) 22:52:14下流工程で延々とモガき続ける、いわゆる土方から抜け出せるよう助言したつもりだったが、
余計なお世話だったかもしれない。これで落ちるよ。
0366デフォルトの名無しさん
2010/11/11(木) 22:57:510367デフォルトの名無しさん
2010/11/11(木) 22:59:31余計なお世話どころか、勘違い甚だしすぎる。
SML使う土方現場なんて日本にあったら俺が行きてーよw
0368365
2010/11/11(木) 23:14:44>>366
スマン。>>363の
>>>357
>根拠は、>>305が使った「スタイル」と言う言葉。
という部分の>>357というアンカは間違いだった。>>360宛のレスとして読み直してくれ。
0369デフォルトの名無しさん
2010/11/11(木) 23:22:160370デフォルトの名無しさん
2010/11/11(木) 23:27:020371デフォルトの名無しさん
2010/11/12(金) 00:43:43私はただの数値計算屋なので、このような助言はありがたい。
型の設定は大切にしています。ただ、研究用のプログラムなの
で、予想外の変更が生じるし、過剰に一般的に作ると使いにくく
なるので、なかなか難しいところです。
いまの問題でゆうと、対象の要素数が100とか1000であれば、
ハッシュを使う選択をしますが、当面の問題では、10以下の
固定個なので、列挙子を使いたい訳です。これは、NJの対話型
環境で式を評価したときに、
列挙子名が表示されるためです。
※NJのハッシュは組み込み型であるvectorほど使いやすくはない
ので、ハッシュを避けがちになるという別の問題はある。
なおUnsafe.castは前にOcamlにはmagicがあるという話が出たの
で、備忘録的に書いただけです。
0372デフォルトの名無しさん
2010/11/13(土) 19:02:170373デフォルトの名無しさん
2010/11/13(土) 21:11:230374デフォルトの名無しさん
2010/11/16(火) 01:51:58それも国内で。
結構なことじゃないの。
0375デフォルトの名無しさん
2010/11/17(水) 03:57:12が使えることのに気付くのにも時間が掛かったが、まさか、.cm/への
書きこみで競合が起こるとは想像だにできなかった。
0376デフォルトの名無しさん
2010/12/07(火) 20:39:56From: Julian Assange <proff@i...>
Subject: call for ocaml volunteers
http://caml.inria.fr/pub/ml-archives/caml-list/2000/08/6b8b195b3a25876e0789fe3db770db9f.en.html
0377デフォルトの名無しさん
2010/12/17(金) 00:13:19としてsml_tkがあるようだが、Posixストラクチャ
とか使っててコンパイルできない。
0378デフォルトの名無しさん
2011/02/11(金) 13:52:350379デフォルトの名無しさん
2011/02/16(水) 22:27:36気配はないねぇ。
0380デフォルトの名無しさん
2011/02/17(木) 00:06:390381デフォルトの名無しさん
2011/02/17(木) 00:16:06ocamlのobject的な機能って使ってる人いるのかね?
0382デフォルトの名無しさん
2011/02/17(木) 00:31:110383デフォルトの名無しさん
2011/02/27(日) 19:00:35.300384デフォルトの名無しさん
2011/02/28(月) 06:23:51.79あなたやその他の人が誰も立てないから。
0385デフォルトの名無しさん
2011/03/02(水) 23:24:04.60先日のRuby会議でCoqの話題が多かったようです。
ttp://partake.in/events/47ccda3b-82d2-4f89-aa83-395a26545b62
0386デフォルトの名無しさん
2011/03/03(木) 07:11:19.470387デフォルトの名無しさん
2011/03/11(金) 15:27:53.72私にそう言ったのは、大法螺吹きの異名で名高い営業マン。
もちろん、彼はプログラミングのことは全然知らない。
たぶん関数型言語のこともどっかのポルノ雑誌ででも読んだのだろう。やれやれだ。
「岡村ってのが新しいらしいね。」
なんだよ、その岡村って…。もしかして日本人の開発した関数型言語か?岡村って誰だよ。
「やねさんなら、当然、岡村、使ったことあるよね?」
使ったことあるどころか、名前すら知らんよ。なんだよ、岡村って…。
「あれー?やねさんともあろう御人が、岡村も知らないとは…」
いや、マジで知らんよ。なんなんだよ、それ。
「そうかー。知らないのかー。やねさんでも知らないのかー。」
そう言われて「なんだかなぁ」と思いながら帰ってきて、「関数型言語 岡村」でググって見たけど、そんなの出てこねーよ。
「なんだよ、また、いつもの大法螺かよ!」と思って、布団に入って寝てたら、深夜の三時に、「もしかして、岡村ってOCamlのことじゃね?」と夢のなかで気づいて、いま悔しくて壁を思いっきりグーパンチで殴ってるところ。
0388デフォルトの名無しさん
2011/03/11(金) 19:43:34.45Yacc束してたのに、Matlab。
あだー。アラン、隙間フェチ、すから。
見つけるのは一苦労じゃろーね。Sque無い
嗚呼、くっ。一緒にエイダみる予定だったのに・・
遅coqしたら理彩のレイジがMaximaになる
メーリングリストで蓮家等に聞いてミルか
Amigaとう。んじゃ,またAgda!
Orc、またAgdaな
0389デフォルトの名無しさん
2011/03/11(金) 21:16:39.930390デフォルトの名無しさん
2011/03/13(日) 21:05:50.23Coqスレ
http://hibari.2ch.net/test/read.cgi/tech/1300017923/
0391デフォルトの名無しさん
2011/04/02(土) 19:12:41.89ワロタwww
0392デフォルトの名無しさん
2011/04/04(月) 00:00:15.57(fn x => x (Unsafe.cast x)) (fn x => (Unsafe.cast x))
0393デフォルトの名無しさん
2011/04/04(月) 00:35:09.27let safe (Safe x) = x;;
print_char((fun x -> safe x x) (Safe (fun x -> safe x x)));;
0394デフォルトの名無しさん
2011/04/05(火) 21:49:01.21OCamlならこんなかんじ?
(fun x -> x (Obj.magic x))(fun x -> x (Obj.magic x));;
0395デフォルトの名無しさん
2011/04/14(木) 09:44:35.08で、技術書買って真っ先にやることと言えば正誤チェック。
つ・・つかえねぇ・・・この本
誤謬の嵐だぜこりゃw
量がハンパネェ
本として機能してない
残念だがゴミ箱へ
0396デフォルトの名無しさん
2011/04/14(木) 21:22:48.50そんなにひどいの?
0397デフォルトの名無しさん
2011/04/15(金) 00:44:37.03うん?
自分にとっては、haskellの学習に大きく寄与したぞ?
コラムの再帰に関する格言と、その本質に言及した言葉が無かったら、関数型言語を挫折してた
(関数型言語の魅力が解らなかっただろう)
自分は、この人にhaskell版を書いて欲しいぞ
今なら言える
手続き型言語は全体的に(それをするには)「どうする」で作り、関数型言語は、全体的に(それは)「何か(あるいは、どんなものか)」で作る言語だと
0398デフォルトの名無しさん
2011/04/16(土) 12:37:58.03俺も最近買ってしまって読んでるんだが、誤植の場所を教えてくれ。
素人でもわかるものなのか?
0399デフォルトの名無しさん
2011/04/16(土) 12:57:42.570400デフォルトの名無しさん
2011/04/16(土) 13:50:43.61> 誤謬の嵐だぜこりゃw
>>398
> 俺も最近買ってしまって読んでるんだが、誤植の場所を教えてくれ。
「誤謬」のある本と「誤植」のある本の違いは大きい。
本当はどっち?
0402デフォルトの名無しさん
2011/04/17(日) 20:32:04.80両方。誤植も誤謬もある。
http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/OCaml/
技術書でこれだけの間違いがあったら、どうやって本として機能するんだろう?
0403デフォルトの名無しさん
2011/04/17(日) 21:40:45.30そのページ印刷して本に挟んどけよ
0404デフォルトの名無しさん
2011/04/17(日) 22:50:12.49これぐらいの量の間違いは大したことないと思う。
0405デフォルトの名無しさん
2011/04/17(日) 22:51:29.380406デフォルトの名無しさん
2011/04/18(月) 00:31:01.420407デフォルトの名無しさん
2011/04/18(月) 08:22:14.270408デフォルトの名無しさん
2011/04/18(月) 11:08:36.970409デフォルトの名無しさん
2011/04/20(水) 18:55:51.89アマゾンで下のレビュー書いた人かいw
0410デフォルトの名無しさん
2011/04/20(水) 20:57:40.94ヨウ素がリストの参照になっているようなベクトルを用意して、各要素に
データを追記していくような処理をさせると(具体的には、複数の時系列を記録
したファイルがあって、これを時間順に読む)、追記回数の自乗のオーダの
処理時間が掛る。リストの先頭に追加しているだけなので、線形時間でやって
ほしい。
0411デフォルトの名無しさん
2011/04/20(水) 20:58:06.52val bigV = Vector.tabulate(1000000, fn _ => ref (nil:int list))
val dat = Vector.tabulate(1000000, fn i => i)
val t0 = Time.now();
val tLast = ref (Time.-(t0,t0));
fun showTime() = let
val tLast' = !tLast
val () = tLast := Time.- (Time.now(), t0)
val dt = Time.-(!tLast, tLast')
in
Time.toString (!tLast)^","^ Time.toString dt
end
fun append k =
(print (Int.toString k ^ "," ^ showTime()^ "\n")
;Vector.app (fn box => box := k :: !box) bigV
)
val () = Vector.app append dat
0412デフォルトの名無しさん
2011/04/20(水) 21:15:18.300413sage
2011/04/20(水) 21:46:08.880414デフォルトの名無しさん
2011/04/21(木) 00:19:44.70bigVの大きさを一桁下げると速度がぐっと変わるし、GCとかのせいな気がする。
0415デフォルトの名無しさん
2011/04/26(火) 20:50:17.84C言語だとHello Worldから始まって、リスト処理は構造体とポインタの応用問題という位置づけだった。
SMLはいきなりリストと再帰の話から始まるw
BASICは、LISPよりも後から開発されて、しかも同じダートマス大学発祥だけど、
リスト処理が実装されていないのもそれなりの理由があったのかなと思う。
0416デフォルトの名無しさん
2011/04/26(火) 21:56:29.550417デフォルトの名無しさん
2011/04/26(火) 22:12:07.58> BASICは、LISPよりも後から開発されて、しかも同じダートマス大学発祥だけど、
> リスト処理が実装されていないのもそれなりの理由があったのかなと思う。
LISPとBASICじゃ作られた目的が全然違う
それに当時の計算機の性能ではリスト処理は時間的にもメモリ的にも大変重い処理だった
今の感覚や価値観は60年代の計算機や言語・ソフトの評価や判断には全く通用しない
0418デフォルトの名無しさん
2011/04/27(水) 00:17:49.66その信念に基づいた妄想を長々と書きこむところ、
これはその人の性質をよく表していると思う。
こういうひとのためにも緩い言語は必要。
ML系はそういうのとは全然違う。
0419デフォルトの名無しさん
2011/04/27(水) 14:00:52.81ポインタ+構造体+慎重な操作を免除して、いきなりリストが使えるのが
売りだと思うのだけれど。
また、MLは破壊的代入+whileループが特別な儀式をしなくても使えるの
で、再帰を学ばなくてもある程度は使える。
0420デフォルトの名無しさん
2011/05/18(水) 01:03:29.10やつを追う前に言っておくッ!
おれは今やつのStateTをほんのちょっぴりだが体験した
い…いや…体験したというよりはまったく理解を超えていたのだが……
,. -‐'''''""¨¨¨ヽ
(.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ!
|i i| }! }} //|
|l、{ j} /,,ィ//| 『おれは奴の前で階層を lift していたと
i|:!ヾ、_ノ/ u {:}//ヘ 思ったらいつのまにか lift が消えていた』
|リ u' τ ,ノ _,!V,ハ |
/´fト、_{λ{,ィ'eラ , タ人 な… 何を言ってるのか わからねーと思うが
/' ヾ|宀| {´,)⌒`/ |<ヽトiゝ おれも何をされたのかわからなかった…
,゙ / )ヽ iLレ u' | | ヾlトハ〉
|/_/ ハ !ニ⊇ '/:} ∀:::ヽ 頭がどうにかなりそうだった…
// 二二二7'T'' /u' __ /:::::::/`ヽ
/'´r -―一ァ‐゙T´ '"´ /::::/-‐ \ キャストだとかサブタイピングだとか
/ // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ そんなチャチなもんじゃあ 断じてねえ
ノ ' / ノ:::::`ー-、___/:::::// ヽ }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ もっと恐ろしいものの片鱗を味わったぜ…
0421デフォルトの名無しさん
2011/06/08(水) 22:38:54.290422デフォルトの名無しさん
2011/06/20(月) 02:35:53.95ターミナルでTwitterクライアントが動くらしいので
Ocamltterに手を出してみる。
そういえば親父がLISP好きだったのを思い出す。
0423デフォルトの名無しさん
2011/06/20(月) 02:43:18.060424デフォルトの名無しさん
2011/06/20(月) 02:48:34.900425デフォルトの名無しさん
2011/06/20(月) 07:42:00.20for文と違う。
数学者にやらせると面白いことになりそうな謎のワクワク感を感じる言語ではある。
0426デフォルトの名無しさん
2011/06/30(木) 22:40:46.750427天使 ◆uL5esZLBSE
2011/07/05(火) 04:45:54.85ここで、Ruby以外を選ぶ奴ってマジでなんなんだろうな
ゴミの分際でw
0428デフォルトの名無しさん
2011/07/05(火) 11:37:20.29科学計算を主に念頭においてるものだったら、Python一択になってくるよ。
それだけライブラリが充実している。scipy,numpy,matplotlib,mayaviなんて
のがあるからね。
>>415
手続き脳から見れば当然難しいけど、数学の漸化式を知ってれば再帰は
馴染みやすいし問題ないよ。難しくしてるのは頭の中で無理やり手続き型
に想定して理解しようとする癖があるからだよ。手続き型に染まった連中が
苦労するのはその悪癖が抜けないから。
リストとか関数の取り扱い(Cでいうと関数ポインタだな。)は手続きにとって
みれば高嶺の花だけど、そこが一番簡単にさせている要因なんだよね。
手続きに染まった人ってただ頭が硬直しただけなんだよ。
0429デフォルトの名無しさん
2011/07/05(火) 11:40:45.99誤解を招くだけでないかな。
0430デフォルトの名無しさん
2011/07/05(火) 12:09:28.96じゃあどう簡潔に言えばいいか示してくれ。それだけでいいよ。
0431デフォルトの名無しさん
2011/07/05(火) 12:14:26.970432デフォルトの名無しさん
2011/07/05(火) 12:20:26.45手続き脳の人相手に話をする場合、それで通じれば問題がないけど
彼らの試行の中で比較的近いものを取り上げて説明しようとしないと
たぶん、言葉が通じないと思うよ。CS専攻の連中相手に話をするならば
それで問題はないよ。もし知らなければ不勉強だってことだからさ。
0433デフォルトの名無しさん
2011/07/05(火) 19:57:30.540434デフォルトの名無しさん
2011/07/05(火) 20:12:36.48クロージャは、下手にCの概念で説明するよりは、定義をしっかり伝えたほうが、
相手に伝わりやすい代表例じゃないかな。モナドとか継続とかと一緒で。
0435デフォルトの名無しさん
2011/07/05(火) 20:37:31.44C++ユーザならC++用語で言うファンクタ(関数オブジェクト)を結構使うはずなので、
ただの関数ポインタとの違いはわかっていると思う
クロージャが近いのは勿論ファンクタのほうだけど、C++のようにいちいち
classやstructでそれを記述する必要がない
もっともC++のそれがあまりに面倒くさかったので、C++でも0xでついにlambdaが
導入されたわけだけど
0436デフォルトの名無しさん
2011/07/07(木) 11:04:09.840437デフォルトの名無しさん
2011/07/07(木) 13:02:54.88誤爆?
0438デフォルトの名無しさん
2011/07/09(土) 19:06:45.30>一応Cでもgcc拡張ならクロージャはある
nested function の事なら、内部関数から参照している変数のスコープの
外からは使えないのでクローズしているとは言えないんじゃないかな。
http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
C なら Blocks を使う方が良さそう。
0439デフォルトの名無しさん
2011/07/12(火) 19:45:27.51そこを読むとinner functionのアドレスを取れると書いてあるけど、
upward funarg problemを解決しているわけではないの?
0440デフォルトの名無しさん
2011/07/12(火) 20:32:45.49環境を保存しておいてくれる訳じゃないからね
0441デフォルトの名無しさん
2011/07/12(火) 22:06:56.99ということか。
0442デフォルトの名無しさん
2011/07/30(土) 19:06:44.85こういう用途ならこっちのほうがいいとか、なんかアドバイスお願いします。
0443デフォルトの名無しさん
2011/07/30(土) 19:45:47.15では、用途を教えてくだしあ
0444デフォルトの名無しさん
2011/07/30(土) 20:08:56.47こーいうやつはプログラミングの勉強自体が目的だろ。
0445デフォルトの名無しさん
2011/07/30(土) 20:16:25.35プログラミングの勉強自体が目的ならhaskell一択
0446デフォルトの名無しさん
2011/07/30(土) 20:42:08.59はい、その通りです。
PHPとJavaとJavaScriptはある程度書けますが、関数型言語をなにかひとつみにつけようと思います。
>>445
よろしければ理由を教えてください。
ぐぐった感じでは、haskellはモナドというのが難しくて多くの人が挫折しているようので、OCamlに傾いてます。
0447デフォルトの名無しさん
2011/07/30(土) 20:52:58.37勉強ってことだし、関数な考え方を得ようってなら純粋なHaskellの方を推奨
0448デフォルトの名無しさん
2011/07/30(土) 20:54:22.930449デフォルトの名無しさん
2011/07/30(土) 20:56:02.64http://learnyouahaskell.com/
を挙げておきます。下の方にあるonlineを選ぶと、売っているものに近い内容が読めますよ。
0450デフォルトの名無しさん
2011/07/30(土) 21:05:00.48とりあえず借りるか買うかして、それぞれ第1章ぐらいやってみなさい。
0451デフォルトの名無しさん
2011/07/30(土) 21:05:33.97関数型言語の特徴が余す事なく取り入れられてる
モナドは使う分には難しくない
使う分にはシンプル イズ ベストな書き方がやり易い言語
モナドを分からないと使えるようにならないと勘違いして脱落する人多いけど、モナドの理論的背景を理解する必要は無い
気になるなら気長に勉強しなされ
OCamlはループも有るし、副作用対策諦めてるし、手続き型言語に限りなく近い関数型言語って感じ
速いコード吐けるけど、昨今の関数型言語の特徴取り入れた手続き型言語が多い時代に勉強する意味は薄い
0452デフォルトの名無しさん
2011/07/30(土) 21:07:10.730453デフォルトの名無しさん
2011/07/30(土) 21:10:08.690454デフォルトの名無しさん
2011/07/30(土) 21:16:22.99カリー分と遅延評価がデフォルトで付いてない
自分で同じ事を再現とかは出来るけど、それじゃ関数型言語の学習とは違う
0455デフォルトの名無しさん
2011/07/30(土) 21:20:58.25haskellスレで翻訳中って聞いたぞ
あと、kindleでサンプル読んだ限りじゃプログラミングhaskellの内容を砕けた言葉とイラストで書いてるだけに見える
内容的にはすでに翻訳されてるプログラミングhaskellで十分
0456デフォルトの名無しさん
2011/07/30(土) 21:28:52.08OCamlスレなのにHaskell勧める人ばかりなので、OCamlに未練はあるけど、思い切ってHaskellやってみようと思います。
0457デフォルトの名無しさん
2011/07/30(土) 21:34:22.91いや。。。
haskellもMLの子孫なんだが。。。
0458デフォルトの名無しさん
2011/07/30(土) 21:36:14.27俺はHaskell→OCamlと来た。
どっち先でもいいし、両方やればいいんじゃないだろうか。
片方しかやっちゃいけない決まりはないんだし。
面白いことは何でもやるべきだよ。
ミニ四駆だって、マグナムセイバーを買う傍ら、ソニックセイバーも買っただろ。それと同じ。
0459デフォルトの名無しさん
2011/07/30(土) 22:15:41.84http://caml.inria.fr/ocaml
0460デフォルトの名無しさん
2011/07/30(土) 23:17:43.260461デフォルトの名無しさん
2011/07/30(土) 23:23:32.07>>456にはOCamlと縁が無かったんだな。。。
0462デフォルトの名無しさん
2011/07/30(土) 23:29:26.270463デフォルトの名無しさん
2011/07/30(土) 23:50:18.390464デフォルトの名無しさん
2011/07/31(日) 21:38:50.21>描いたのは俺!
>RT @y_echo
>RT @kinaba: なにがあったのwww
>RT @kikx これは変わりすぎだろ!
>RT @yoshihiro503 ちょ、 OCaml のサイトが激しくイメチェンしてる caml.inria.fr
0465デフォルトの名無しさん
2011/08/01(月) 08:56:35.190466デフォルトの名無しさん
2011/08/01(月) 10:15:28.29http://twitter.com/#!/camlspotter/status/97683309177475073
>一つだけ皆さんに言っておきます。毎年この時期には OCaml には何かが起きます。
>それはリア充関係者がバカンスに行ってしまって連絡が取れなくなるからです。
> RT @ytomino ocamlがついに滅んだと聞いて(遅い
http://twitter.com/#!/camlspotter/status/97685810127716353
>てか週末にサーバ不調になったら48時間止まるのあたりまえやろ?人間として。
http://twitter.com/#!/camlspotter/status/97686190618181632
>と haskell.org が落ちたときには wktk してた人が言っても説得力ありませんな
とりあえずフランスの月曜日昼(日本時間21時ごろ)まで待ちましょう。
それまでに復旧しなければ長期化確定ですね。
0467デフォルトの名無しさん
2011/08/01(月) 10:34:00.780468デフォルトの名無しさん
2011/08/01(月) 22:02:08.55直らんね。もうしばらく待つか。
0469デフォルトの名無しさん
2011/08/01(月) 22:10:14.760470デフォルトの名無しさん
2011/08/02(火) 18:02:01.87ocamlも触ってみたいけど、いまHaskell勉強中なんだ。たぶん、来年くらいには
やれればな。HaskellってLispと同じでプログラム作成までの抽象化も含めた
戦略を練るのに時間がかかる言語って感じがしました。Ocamlも同じなんだろうね。
0471デフォルトの名無しさん
2011/08/02(火) 20:08:11.410472デフォルトの名無しさん
2011/08/02(火) 20:23:02.98Haskell影響は並列周りでしょ。
そもそもSTMはHaskell由来じゃないし。
他はもろLisp直系じゃん。
0473デフォルトの名無しさん
2011/08/02(火) 21:58:52.67見た目だけで話してるでしょ?
実際に触ってみればわかるけど、無限ストリーム近辺の関数はHaskellと
かなり近いよ。takeとかその辺のことね。common lispでも自作する方法は
あってもこの手の物は標準でないしね。
だから、リストの取り扱いってがhaskellに近くなってる。
>>471
なるほど
0474デフォルトの名無しさん
2011/08/02(火) 23:33:03.740475デフォルトの名無しさん
2011/08/03(水) 02:04:20.65> そもそもSTMはHaskell由来じゃないし。
でも中興の祖はHaskellの人(Tim Harris)じゃないっけ?
0476デフォルトの名無しさん
2011/08/03(水) 02:21:43.190477デフォルトの名無しさん
2011/08/03(水) 09:37:38.27ミランダとかなの?よくしらないけど(wikiでちょっと見たけど、
haskellの親玉っぽかった。)
それはともかく、Clojureが関数型の大きな影響をかんじるのは
イミュータブルなところかも。あれのお陰で、副作用をもたせようと
思ったら基本的にSTMの部分を活用しなきゃならない。(java固有の
ライブラリは例外的なんだけど。)それと遅延評価言語だって
ところがcommon lisp を触ってる時よりhaskellの影響を感じやすいのかも。
あとは内包表記かな。wikiにはlisp,ML, haskell erlangが影響を受けた言語
とかかれている。
0478デフォルトの名無しさん
2011/08/19(金) 10:50:16.310479デフォルトの名無しさん
2011/09/19(月) 21:56:29.91おもしろいことありますでしょうか?
0480デフォルトの名無しさん
2011/09/19(月) 23:59:49.520481デフォルトの名無しさん
2011/09/24(土) 23:23:23.61どんなライブラリでしょうか?
0482デフォルトの名無しさん
2011/09/25(日) 11:44:54.04どんなライブラリをつくったら面白いでしょうか?
なのか
ライブラリを作ることはテーマとして面白味があるでしょうか?
なのか。
0483デフォルトの名無しさん
2011/09/27(火) 20:28:58.480484デフォルトの名無しさん
2011/09/27(火) 20:52:03.96比較的、ホットなトピックだと思うけど。
http://www.google.co.jp/search?q=functional+reactive+programming+openflow
0485デフォルトの名無しさん
2011/09/29(木) 14:23:07.44型推論の部分だけ分かりやすくコンパクトにまとめられたコードどこかにないでしょうか
0486デフォルトの名無しさん
2011/09/29(木) 15:11:00.44http://en.wikipedia.org/wiki/Hindley%E2%80%93Milner
0487デフォルトの名無しさん
2011/09/29(木) 15:56:30.36このテキストの17章
http://www.scala-lang.org/docu/files/ScalaByExample.pdf
タイガー本の16章
http://www.cs.princeton.edu/~appel/modern/ml/
0488365
2011/09/29(木) 18:07:57.87Prolog で型チェック:Rainy Day Codings:So-net blog
http://rainyday.blog.so-net.ne.jp/2008-06-16
題名は型チェックだけど、コードはまぎれもなく型推論
0489デフォルトの名無しさん
2011/09/29(木) 19:09:02.350490デフォルトの名無しさん
2011/10/04(火) 18:43:07.61しかし返値しか推定してないね
0491デフォルトの名無しさん
2011/10/06(木) 15:33:53.100492デフォルトの名無しさん
2011/10/06(木) 19:31:29.68ttp://gallium.inria.fr/~protzenk/caml-installer.html
0493sage
2011/10/06(木) 20:07:16.49SML/NJの場合だと、適当なファイル(例えばhoge.sml)に保存して、保存した
フォルダでNJの対話環境を起動して、
use "hoge.sml"
とすればよい。useはカレントディレクトリからソースを読み込む関数で、
カレントディレクトリの取得/変更は、
OS.FileSys.getDirとOS.FileSys.chDirでできる。
0494デフォルトの名無しさん
2011/10/06(木) 21:24:34.13ありがとう!
0495デフォルトの名無しさん
2011/10/11(火) 22:10:01.73これみるとC#とかやってられんな
0496デフォルトの名無しさん
2011/10/13(木) 22:44:28.70パターンマッチがあるから簡潔になるのか
0497デフォルトの名無しさん
2011/10/13(木) 22:47:43.980498デフォルトの名無しさん
2011/10/13(木) 23:19:58.730499デフォルトの名無しさん
2011/10/14(金) 07:40:42.96ひどいよな。C#じゃ複雑なデータ構造を扱おうなんてすると沼じゃないか!
今Haskellの勉強をしててOcamlは読んだことはなかったんだけど
読めるもんだなとも思った。
0500デフォルトの名無しさん
2011/10/14(金) 07:48:35.09with the real structure obscured by syntactic noise.
事実だけど、辛辣だな。
0501デフォルトの名無しさん
2011/10/14(金) 11:38:18.36関数型言語群はMLの影響が強いからね。
C言語系という言い方では、ML系と言ってしまってもいい。
0502デフォルトの名無しさん
2011/10/14(金) 21:38:01.24なるほど、ML系かぁ。そういわれれば納得です。
0503デフォルトの名無しさん
2011/10/14(金) 22:41:41.950504デフォルトの名無しさん
2011/10/16(日) 05:15:33.480505デフォルトの名無しさん
2011/10/19(水) 21:52:08.21Pythonみたいな泥臭い方法でもいいんだけど.
0506デフォルトの名無しさん
2011/10/20(木) 12:56:49.09書いた方が答をもらいやすいよ
0507デフォルトの名無しさん
2011/10/20(木) 14:05:46.81OCamlにエントリポイントはないです。__main__とかないです。
ocamlc -o a.out a.ml b.ml c.mlとしてコンパイルすると、
a.outの動きとしてはmodule A,B,Cの順番で評価されるイメージになります。
0508デフォルトの名無しさん
2011/11/06(日) 03:27:50.020509デフォルトの名無しさん
2011/11/06(日) 06:11:24.22http://d.hatena.ne.jp/ymotongpoo/20111105/1320506449
原文: http://queue.acm.org/detail.cfm?id=2038036
0510デフォルトの名無しさん
2011/11/06(日) 22:31:50.250511デフォルトの名無しさん
2011/11/07(月) 22:42:07.36どしょっぱつの,Sometimes, が訳されていないとか,いろいろと
気になるところはあるけれど,大意は伝わった。うむうむ。
0512デフォルトの名無しさん
2011/11/12(土) 05:42:33.310513デフォルトの名無しさん
2011/11/12(土) 05:53:40.360514デフォルトの名無しさん
2011/11/19(土) 10:47:17.91tokuhirom、ma.la?っていう人の話だけ聞きたい
色々なスレで見かけるけどWEB業界で有名らしいね
動画ありませんか?
0515デフォルトの名無しさん
2011/11/23(水) 00:53:05.05とかなら有りそうに思うけど、今は大学と関係ないから探せんわ。
SML中心で書いてるようだ。Ocamlへの改変の仕方ものってる
というのはgoogle booksでわかった。
使って学習した人っておらんの?
0516デフォルトの名無しさん
2011/11/23(水) 09:07:06.79面白いよ。
0517デフォルトの名無しさん
2011/11/23(水) 14:49:34.72http://webcat.nii.ac.jp/cgi-bin/shsproc?id=BA3501073X
意外とおいてるところ少ないね。今学習してる本が片付いたら
購入検討するわ。
0518デフォルトの名無しさん
2011/11/23(水) 15:07:11.140519デフォルトの名無しさん
2011/12/10(土) 10:15:38.86■ このスレッドは過去ログ倉庫に格納されています