トップページtech
1001コメント325KB

関数型プログラミング言語Haskell Part12

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/04/29(木) 19:15:28
haskell.org
ttp://www.haskell.org/

日本語サイト
ttp://www.sampou.org/cgi-bin/haskell.cgi
ttp://www.shido.info/hs/

過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
・2chの仕様により、行頭の半角スペースは表示されません。
 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
0237デフォルトの名無しさん2010/05/29(土) 13:50:07
たらいがそのままで爆速
0238デフォルトの名無しさん2010/05/29(土) 14:35:07
>>236
quick sortちゃう?
0239デフォルトの名無しさん2010/05/29(土) 14:53:31
副作用とhaskellやc/java のこともかも
0240デフォルトの名無しさん2010/05/29(土) 15:19:22
>>236
とりあえずトランザクション制御とか
0241デフォルトの名無しさん2010/05/29(土) 15:27:54
逆に素人にCやJavaの話するときって何話すの?
0242デフォルトの名無しさん2010/05/29(土) 15:43:40
まずはhello, world
0243デフォルトの名無しさん2010/05/29(土) 16:01:14
>>241
フォンノイマンの死に様
0244デフォルトの名無しさん2010/05/29(土) 16:04:12
まぁ、社交の基本だけど、何か専門的な事を素人に話す場合、
人物を語るのが一番良い印象を与えやすいんだよね。
関数がどうのこうのと技術的な話なんて興味を持つ動機には成り得ないよ。
0245デフォルトの名無しさん2010/05/29(土) 16:16:09
えー?
人物について語るのって専門の話を回避するテクニックであって、
専門的な事を話す目的があったらそれじゃダメじゃん。
0246デフォルトの名無しさん2010/05/29(土) 16:16:28
>>241-244
何に対しての「逆」を想定してるんだ?

>>222,226 の逆であれば、Haskell を一通り習った人が
CやJavaの素人に入門的な話をするという事だと思うが、
それなら Hello, World も、人物の話も、
それほど適切ではないような気がするが。
0247デフォルトの名無しさん2010/05/29(土) 17:43:23
Haskellから入門するって、従来では考えられなかったケースだからね。
データ構造にしても、可変の方がはるかに蓄積が多いから、まず不変を学習してから可変に移るというのは異常。
0248デフォルトの名無しさん2010/05/29(土) 20:46:07
みなさん、ありがとう。

あれから、つまるところ関数型言語の本質はなんだろう、などと考え始めて
1日つぶれてしまいました。

余り大上段に構えず、こんな便利なことができる、程度の紹介にとどめておいた方がいいですね。
とりあえず高階関数だけはおさえておこうと思います。
0249デフォルトの名無しさん2010/05/29(土) 20:48:03
Software Design の、この前出た号に、ちょうど特集がある。
0250デフォルトの名無しさん2010/05/29(土) 20:49:15
>>249
あれはあんまり参考にならんぞw
考え方が偏りすぎている
0251デフォルトの名無しさん2010/05/29(土) 21:15:12
そもそもHaskellerに中立的な視点の人なんているのか?
0252デフォルトの名無しさん2010/05/29(土) 21:21:09
この世の誰一人として社会的中立な人間なんていないと断言できる。
だってその人自身が社会を構成する人間の一人なんだから。
0253デフォルトの名無しさん2010/05/29(土) 21:37:21
>>248
高階関数と再帰の具体例を挙げて関心を持ってもらうストーリーがよさそうですね。
あとは「変」数じゃなくって…って話かな。

C言語の人は関数ポインタを使うのとどう違うの?とか聞いてくるかもしれませんね。
え?そんなビギナーの聴衆はいないって?w
0254デフォルトの名無しさん2010/05/29(土) 21:40:35
>>248
関数型言語の本質はラムダ計算にある。
0255デフォルトの名無しさん2010/05/29(土) 21:42:04
>>253
遅延評価なんだから無限リストも。
0256デフォルトの名無しさん2010/05/29(土) 22:02:37
関数ポインタでは書けなくて、高階関数が必要な例ってあるのかな?
0257デフォルトの名無しさん2010/05/29(土) 22:03:53
無限リストは他の関数型言語を知っている人でもなかなか理解しにくくない?
俺は A Gentle Introduction to Haskell の fibs の例はなかなか理解できなかった。

>>247
既存のアルゴリズム本を参考にして
リストに (!!) でアクセスしまくるコードを書いて来た人を思い出した
0258デフォルトの名無しさん2010/05/29(土) 22:39:43
無限リストといえば、ストリームや遅延パターンの話でよく例示される
server と client のプログラムを理解するのに時間がかかったな。

紙に鉛筆で簡約ステップを書き下して正しいと頭では分かっていても、
初めは問題なく動くのがなんか不思議な感じだった。
ああいうのをスラスラと例示できるようになりたいな。
0259デフォルトの名無しさん2010/05/29(土) 22:42:21
Prologやったことあれば無限リストはおなじみ
0260デフォルトの名無しさん2010/05/29(土) 22:58:56
>>256
ないよ
値としての関数は、ローカル変数の値を記録したオブジェクトと生の関数ポインタの組み合わせ(クロージャ)で表現できる
実際GHCなんかはコンパイル時に似たような変換してるはず
0261デフォルトの名無しさん2010/05/29(土) 23:12:02
なぜかHaskellの講義なのにコンスセルの説明で時間を取られる気がするw
0262デフォルトの名無しさん2010/05/29(土) 23:44:05
相手がlisperなら色々と話が早そうだ
0263デフォルトの名無しさん2010/05/30(日) 01:04:03
クロージャについては、実現可能だけど関数ポインタだと面倒っていう例になるかな。
Java の人なら、環境をフィールドとして持つ
call メソッドだけが定義されたオブジェクトみたいなものと言えば通じるんだろうか
0264デフォルトの名無しさん2010/05/30(日) 15:17:58
「Haskell は論文を書くためだけに作られた言語です」
0265デフォルトの名無しさん2010/05/30(日) 15:22:53
「それなのに実用になるって、凄い事だと思いませんか?」
0266デフォルトの名無しさん2010/05/30(日) 16:54:04
>>264
LLの王様で超実用言語のperl6がhaskellで作られた、つまり、haskellは超超実用言語だ。
0267デフォルトの名無しさん2010/05/30(日) 17:07:28
perl6って使われてんの
0268デフォルトの名無しさん2010/05/30(日) 17:29:03
Perl6のリリースは6月の予定だよ
0269デフォルトの名無しさん2010/05/31(月) 01:51:43
>>264 prolog がかまってほしそうにこっちを見ています
0270デフォルトの名無しさん2010/05/31(月) 03:07:22
cabalファイルの書き方についての質問ですが、
実行ファイルの保存先を./binにしたいのですが、
どのように書けば良いでしょうか?
0271デフォルトの名無しさん2010/05/31(月) 06:24:16
>>270
CabalのBuild-type: Simpleは典型的なケースを「シンプル」に記述できるようにデザインされている。
Executableのパスを明示的に指定するのは典型的なケースではないので、他のBuild-type、たとえばCustomなどを調べてみてはどうだろうか。

0272デフォルトの名無しさん2010/05/31(月) 12:59:23
>>260
そもそも汎用プログラミング言語はすべてチューリング等価なんだから、
できることは同じ。
生産性と実行効率を改善するための努力が延々と続いている。
0273デフォルトの名無しさん2010/05/31(月) 13:25:29
cとかjavaとかは関数型に比べれば冗長だもんな。
思考にとって無駄が多すぎる^^; そのてん 生産性の向上はあるわな。
0274デフォルトの名無しさん2010/05/31(月) 13:41:37
>>273
なにを生産するかによるな
OSを生産させたら関数型のほうが冗長かもしれないし
関数型のキラーアプリである「あれ」を生産させたらもちろんCのほうが冗長だよね
0275デフォルトの名無しさん2010/05/31(月) 13:43:45
HaskellのキラーアプリといえばParsecだろ
0276デフォルトの名無しさん2010/05/31(月) 15:17:33
1 つの Haskell は全ての言語を繋ぎ止める

http://news.ycombinator.com/item?id=1390889
0277デフォルトの名無しさん2010/05/31(月) 17:53:03
>>274
「あれ」って何? もうさっきから気になって気になって、仕事が手に付きません
0278デフォルトの名無しさん2010/05/31(月) 17:55:01
>>274
どんな種類のソフトウェアを書くにしても関数型がCより冗長にしか書けないということはありえない。
OSがCで書かれているのは、抽象レベルの高すぎる言語はportableでないからだ。
少なくとも昔は、lispなどでは十分に速い実行コードを生成することができなかった。
0279デフォルトの名無しさん2010/05/31(月) 18:43:06
Linux のドライバを書くのに C より Haskell の方が簡潔に書けるとは思えないなあ。
0280デフォルトの名無しさん2010/05/31(月) 18:54:13
それはLinuxのOSモデルが関数型に適していないからだ。
0281デフォルトの名無しさん2010/05/31(月) 18:56:45
関数型に適してないモデルでは簡潔に書けないとすると >>278 の主張と矛盾が生じるね。
>>278 は『ありえない。』って言い切っちゃってるから。
0282デフォルトの名無しさん2010/05/31(月) 19:05:53
lispマシーンが主流な世界だったら変わってたよ。
0283デフォルトの名無しさん2010/05/31(月) 19:07:15
種類=用途だから。
C言語で書かれたプログラムのエミュレーションにはC言語が最適だろう。
0284デフォルトの名無しさん2010/05/31(月) 19:11:09
ひとつの関数を書くという意味ではHASKELLとか関数型のほうがC/JAVAより
短くなるよ。その辺のことを冗長で思考を止めやすいといってる。
ちがう?

関数型って思考に素直な印象が強いんだけどな。手続き型って思考する前
の前準備というのか余計な操作が多いという印象なんだな。

手続き型になれちゃってる人には関数型は面倒なんだろうね。
0285デフォルトの名無しさん2010/05/31(月) 19:11:53
現実には、C から呼び出せる GC のライブラリを作りたいとか、特定のアプリケーションの
プラグインを書きたいとか、Haskell では到底簡潔に書けない様な『種類』のソフトウェアも
沢山あるよね。
0286デフォルトの名無しさん2010/05/31(月) 19:22:18
>>284
その関数が実行される環境を無視するならね。
本来考慮すべきかもしれない事を無視していいなら、それは思考に素直にもなるでしょう。
0287デフォルトの名無しさん2010/05/31(月) 19:24:11
それぞれの言語に強みがある。
Haskellは、記号的な問題を解くのに強い。
そういう問題は関数に落とし込めるようにあらかじめ抽象化されているから。

> 特定のアプリケーションのプラグインを書きたい
Lispでマクロを使うといい。
0288デフォルトの名無しさん2010/05/31(月) 19:30:20
>>287
>> 特定のアプリケーションのプラグインを書きたい
>Lispでマクロを使うといい。

これってどういう意味だか誰か分かる?
Lisp って CL の事で良いのかな?
マクロはリーダーマクロ?
それとも defmacro の話?
それでどうやってプラグインが書けるの?
ちょっと話が見えないな。
0289デフォルトの名無しさん2010/05/31(月) 19:38:32
結局、関数型で書き易い問題とそうでない問題の両方があるってことで異論は無いよな?
0290デフォルトの名無しさん2010/05/31(月) 19:45:31
>>288
記号的というと
・variantがあればLisp風のデータ構造 (括弧は少なめ) を作れる
・concatMapがあればPrologみたいなのを作れる
ただし、クロージャと同じく、関数型ではない言語に取り入れられるかもしれない。
0291デフォルトの名無しさん2010/05/31(月) 19:47:33
>>290
アンカー間違ってない?
0292デフォルトの名無しさん2010/05/31(月) 20:11:51
>>291
フィボナッチのように数学の問題ということではないかと
0293デフォルトの名無しさん2010/05/31(月) 20:14:46
質問に答えられないなら、無理にレスしなくていいよ
0294デフォルトの名無しさん2010/05/31(月) 20:55:11
>>268
なにを指して無視といってるのかがよくわからない。
0295デフォルトの名無しさん2010/05/31(月) 21:07:19
>>294
>>292
0296デフォルトの名無しさん2010/05/31(月) 21:46:00
>>248
結果はまだ先なのかな。どんな反応があったか、よかったらレポートして下さい。
0297デフォルトの名無しさん2010/05/31(月) 23:01:04
>>248
2ちゃん規制されていたから、亀レスだけど、「こんな便利なことができる」っていう紹介で良いと思います。
例えば、(都道府県名, 市長村名, 人口, 面積)みたいなリストを作っておいて、それをmap、filter、sortBy、groupByで操作して、都道府県を人口順に並べるとか、ある県の人口密度を出すとかを、ghciでやると面白いのではないでしょうか。
0298デフォルトの名無しさん2010/06/01(火) 06:51:44
>>297
そうですね。
Haskellの素晴らしさを示すには、オーディエンスが慣れ親しんだ問題を
エレガントに解く方法を示すのがいいと思います。
彼らが使っている手続き型言語による解法との比較もしてはどうでしょうか。

でもただエレガントというだけでは、感情的な反発を引き起こしたり、
マニアックな奴だと思われるかもしれませんから、
人気度やパフォーマンスなどの客観的(統計的)なデータを示し、
長所と短所の両面も伝えてはどうでしょうか。
0299デフォルトの名無しさん2010/06/01(火) 08:54:35
>>272
それは話してるレイヤが違うだろ
CにもHaskellにも「関数」と呼ばれるものがある。Cの関数は実行時に作れないがHaskellのは作れる
ではCの関数だけを使ってHaskellの関数の真似をすることができるか?みたいな問題
ここでいう「真似」というのは関数に渡せるとか変数に入れられるとかそういう言語の「内部」での性質を真似するということ
チューリング完全性の議論はプログラムが全体としてどういう振る舞いをするかしか問題にしていないので、別の話
0300デフォルトの名無しさん2010/06/01(火) 09:53:01
(訳注)
Haskellは実行時にCの関数を作れないが、Cは実行時にHaskellの関数を作れる
Cの関数だけを使ってHaskellの関数の実装をすることができる
「実装」というのはHaskellの「内部」を実装するということ
0301デフォルトの名無しさん2010/06/01(火) 11:43:16
Cは貴金属の現物みたいなものだな
他の言語は、金融工学を駆使した電子マネーを目指しているようだ
0302デフォルトの名無しさん2010/06/01(火) 11:57:13
いまいちよくわからない比喩だな。
Cはどこでも動くが、金塊はどこでも貨幣として使えるわけじゃない
0303デフォルトの名無しさん2010/06/01(火) 12:10:14
>>301
というか電子マネーと金融工学ってあまり関係ないんじゃないか
0304デフォルトの名無しさん2010/06/01(火) 14:45:59
絶対に関係ないと言い切れないところが面倒臭い
0305デフォルトの名無しさん2010/06/01(火) 14:53:26
貴金属の現物 → 具体的なもの
電子マネー   → 具体的なものと機能は同じだけど、実体ははきりせず抽象的なもの
            金融工学は、その抽象的なものから成り立つのを助け、利益を出そうとするもの。

C → 具体的にメモリをいじくったするもの
JavaとかPHPとか → 具体的なものと、機能は同じだけど、にラップをかけて抽象的に扱う。動作は遅い。
              金融工学 → ガーベージコレクション
0306デフォルトの名無しさん2010/06/01(火) 16:37:44
Cも高級言語だし。
ポインタ演算はあるがメモリ割り当てまでコントロールするわけではない。
JavaのHotSpotみたいな最適化技術は金融工学みたいなものといえなくもない。
0307デフォルトの名無しさん2010/06/01(火) 19:03:18
>>279
Haskellを C言語にコンパイルする言語をHaskellで作ればいいんじゃね?
0308デフォルトの名無しさん2010/06/01(火) 19:11:10
>>307
C のソースを吐いても GC 前提だったりランタイムライブラリが必須だったら使えないでしょ。
0309デフォルトの名無しさん2010/06/01(火) 19:37:53
http://tryhaskell.org/

これ何に使うんだろうって思ったけど、iPhone や iPad で Haskell を動かしたい時に良いかも。
0310デフォルトの名無しさん2010/06/01(火) 19:39:25
なんでHaskellはCの関数作れないの?
0311デフォルトの名無しさん2010/06/01(火) 20:03:10
>>308
その昔、JavaOSというOSが勝手にGCしちゃう変なモノがありましてね…
0312デフォルトの名無しさん2010/06/01(火) 20:11:34
>>310
クロージャは「定義された場所のほかに、生成された時刻を持つ」。
(時刻とか言ったら怒られそうだが)

一方、Cの関数はコードの場所だけで特定される。
コードを変更して再コンパイルとかしないと、新たな関数を作ることはできない。
0313デフォルトの名無しさん2010/06/01(火) 20:11:35
>>311
OS レベルで一括してメモリを回収するのは別に良いと思いますよ?
今はそういう話はしていないですけどね…
0314デフォルトの名無しさん2010/06/01(火) 20:25:59
foreign import "wrapper"でCの関数作れるよ
0315デフォルトの名無しさん2010/06/01(火) 21:51:48
evalがない言語は、「関数を実行時に作れる」とは言わないと思う。
0316デフォルトの名無しさん2010/06/01(火) 21:59:39
お薦めの入門書を教えてください
0317デフォルトの名無しさん2010/06/01(火) 22:34:13
>>304
そういう場合は、強硬に主張している相手を値踏みして、
切っても問題なさそうな感じだったら無理矢理切ればいい。
真実がどうであろうと、どっちみち現時点では時間の浪費に
しかならないという算段がつくならその話は結局無駄。
0318デフォルトの名無しさん2010/06/01(火) 23:10:25
>>315
ということは、lex+yaccは「関数を実行時に作れる」言語ということになりますな
0319デフォルトの名無しさん2010/06/01(火) 23:17:11
Haskellが実行時に関数を作れないってのは、
Haskellが実行時にリストを作れないっていうのと同じくらい馬鹿げてる
foreign import "wrapper"は実行時にコード生成するし
0320デフォルトの名無しさん2010/06/01(火) 23:18:39
1 :名無しさん@どっと混む:2009/12/14(月) 20:45:15 ID:unnBMLw10
高根社長のSM趣味サイトMaskRと
副業のSMクラブ銀座プレジス・動画配信専門リアルミストレスばかり語られるが
高根社長の本業コムラッドについても語ろう

銀座プレジス
http://www.prezis.jp/top.htm

MaskR
http://maskr.com/

プレジスを語ろう
http://set.bbspink.com/test/read.cgi/sm/1246009466/

動画配信専門リアルミストレスってどうよ?
http://set.bbspink.com/test/read.cgi/sm/1249183350/

9 :名無しさん@どっと混む:2010/01/03(日) 18:27:00 ID:RSEbBiG0O
高値はもう大麻やめたの?

10 :名無しさん@どっと混む:2010/01/04(月) 05:15:29 ID:A3l1qdv+O
タカネ社長ってどうやってばれないように脱税してんだろ?
億単位で脱税して億ション暮らしなんて凄いよな
監査役の奥さんもグルなのか?

12 :名無しさん@どっと混む:2010/01/05(火) 01:47:06 ID:KAHwqMrBO
株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade
株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade

13 :名無しさん@どっと混む:2010/01/05(火) 01:47:47 ID:KAHwqMrBO
高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉
0321デフォルトの名無しさん2010/06/01(火) 23:19:21
18 :名無しさん@どっと混む:2010/01/07(木) 09:26:06 ID:5NL2jyJpO
高根はMASKRでレイプ仲間募集するのやめたんだね
mixiで募集中か

21 :名無しさん@どっと混む:2010/01/10(日) 19:36:45 ID:FdRwgXUTO
風俗店やってるってことは高根社長は暴力団と繋がってるんだね
どこの組にいくらみかじめ料払ってるんだかw

23 :名無しさん@どっと混む:2010/01/23(土) 03:43:12 ID:Pdcv8aq0O
タカネ社長未成年に酒飲ませてレイプ

24 :名無しさん@どっと混む:2010/01/29(金) 18:16:06 ID:zMwtdkIsO
高根社長のレイプ趣味は病気だから治らない

25 :名無しさん@どっと混む:2010/02/01(月) 01:39:32 ID:uaH5mo2nO
前科者

26 :名無しさん@どっと混む:2010/02/09(火) 00:52:46 ID:JwGmN2cG0
>>25
容疑はレイプ?買春?管理売春?公然猥褻?薬物?脱税?詐欺?傷害?

28 :名無しさん@どっと混む:2010/02/14(日) 22:56:30 ID:lykq8x1VO
どこかのスレで人を死に追いやったと書いてあった

33 :名無しさん@どっと混む:2010/03/04(木) 12:49:19 ID:J8YxaRGO0
金がないって脱税がばれて追徴課税でも来たか?
せっかく脱税の隠れ蓑にプレジス営業してるのに残念だったなw

38 :名無しさん@どっと混む:2010/03/12(金) 21:09:53 ID:L0W4+sivO
首吊り首絞めプレイ大好き高根英哉
0322デフォルトの名無しさん2010/06/01(火) 23:20:03
53 :名無しさん@どっと混む:2010/05/17(月) 13:14:06 ID:E/7OZVtz0
>>18
高根英哉blogでレイプ仲間募集中

私とともにマスクの女どもを弄ぶ仲間を募集する
急に思いついたら連絡をして、集まれるような仲間だ
だから、複数名募集するし、いついつという日時があるわけでもない
条件は以下のとおりだ
    ・SMを実践している、または興味がある
    ・マスクを用意できる
    ・都内でイベント参加できる
    ・イベント内容およびこの仲間を通じて知りえた情報を口外しない
    ・成人男子である
    ・携帯電話および携帯メールアドレスを私に公開できる
    ・酒が好きである
希望者は私宛にメールを送ってほしい
全員が参加できるわけでもないので、こちらの選択に任せてもらう
なるべく想いを書いてもらうほうがわかりやすいし
経験や顔写真も歓迎。
[email protected]
[email protected]
[email protected]
0323デフォルトの名無しさん2010/06/01(火) 23:29:04
コピペ君って馬鹿だな、まで読んだ。
0324デフォルトの名無しさん2010/06/01(火) 23:37:41
実行時コード生成機能なんてあるんだ
Haskellは型安全な言語だと思っていたのに…
0325デフォルトの名無しさん2010/06/01(火) 23:49:51
何をいまさらw HaskellのFFIは、Cと同程度の自由度じゃん
純粋でなくてもいい部分は限りなく自由なのも、Haskellの魅力だと思うね
0326デフォルトの名無しさん2010/06/02(水) 00:22:25
素晴らしい。
ちなみにmapする関数をユーザに入力させるプログラムはどうやって書けばよいでしょうか?

getLine >>= \s -> map (??? s) xs
0327デフォルトの名無しさん2010/06/02(水) 00:46:08
mapMを使ってください
0328デフォルトの名無しさん2010/06/02(水) 01:46:44
>>326

お望みのものと違うかもしれないけど。
ghc --make -package ghc Main.hs

module Main where

import GHC
import GHC.Paths ( libdir )
import DynFlags ( defaultDynFlags )

main = do {
; s <- getLine
; defaultErrorHandler defaultDynFlags $ do {
; runGhc (Just libdir) $ do {
; dflags <- getSessionDynFlags
; setSessionDynFlags dflags
; pm <- findModule (mkModuleName "Prelude") Nothing
; setContext [] [pm]
; runStmt ("map (" ++ s ++ ") [0..10]") RunAndLogSteps
}
}
}
0329デフォルトの名無しさん2010/06/02(水) 08:51:27
セミコロンを行頭にもってくる記法はいいね。
0330デフォルトの名無しさん2010/06/02(水) 20:09:00
>>328
ありがとう。
なるほど、関数をHaskellの世界に持ってくるわけではなく、
引数を向こうの世界に渡して実行させるわけですか。
確かにこれなら、Haskell側は汚染されずにすみますね。
0331デフォルトの名無しさん2010/06/02(水) 20:10:21
すみません、途中で送信してしまいました。

>>327
これは、ユーザが文字列として与えた関数をHaskellの関数にできるということでしょうか?
0332デフォルトの名無しさん2010/06/02(水) 20:11:29
本音と建前を使い分けているかのような嫌な言い方だな
0333デフォルトの名無しさん2010/06/02(水) 20:32:48
Haskellには組み込みのevalがないだけで、自分で好きな構文のevalを書くのは何も問題ない
「ユーザが文字列として与えた関数をHaskellの関数に」することも当然できる
0334デフォルトの名無しさん2010/06/02(水) 20:38:48
そもそもevalってlispの用語だしな
0335デフォルトの名無しさん2010/06/02(水) 20:47:27
文字列をとって可変長引数の関数を返す高階関数になるのかな
0336デフォルトの名無しさん2010/06/02(水) 20:48:40
あ、いや副作用のある関数を返す可能性もあるし、一筋縄ではいかないか
■ このスレッドは過去ログ倉庫に格納されています