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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2012/06/27(水) 10:21:10.18
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/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/
Part18 ttp://toro.2ch.net/test/read.cgi/tech/1331902463/
0951デフォルトの名無しさん2012/10/08(月) 14:20:51.34
プラグマ
http://www.kotha.net/ghcguide_ja/latest/pragmas.html
http://www.haskell.org/ghc/docs/latest/html/users_guide/pragmas.html
0952デフォルトの名無しさん2012/10/08(月) 15:30:28.95
>>950
c の処理系ならもれなくついてくる cpp にかければいいと言いますが、
ghc なら -XCPP オプションを付ければ .hs ファイルの中で #ifdef などが直接使えるので、
あとは最適化オプションを付けたときに、ghc 側でどのようなディレクティブが
自動で定義されるかが分かればできそうです。

それが分からないんですけどね。


>>951
プラグマを使って最適化時にコンパイルするコードを変える方法が
載っていないような気がするのですが、見落としてますでしょうか。
0953デフォルトの名無しさん2012/10/08(月) 18:58:47.52
まともな方法はないと思う
理論的には、Template Haskellは任意のIOを実行できるので、
OSの機能を使ってGHCに渡されてるオプションを調べたり、
デバッガを起動してGHCのメモリ内容を見たりすることは可能
0954デフォルトの名無しさん2012/10/08(月) 19:17:41.14
そういうのはビルド環境のツールでやればいい。
CabalとかSetup.hsとかmakeとか。
コンパイラになんでも詰め込んでしまうとろくなことない。
0955デフォルトの名無しさん2012/10/08(月) 19:31:35.45
>>954
コンパイラでやるのと Cabal でやるのとで、何か違いがあるのですか?
0956デフォルトの名無しさん2012/10/09(火) 10:51:23.68
baka
0957デフォルトの名無しさん2012/10/09(火) 12:13:42.86
       //
     /  /   バカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  ワッフル ワッフル
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0958デフォルトの名無しさん2012/10/09(火) 23:44:17.49
#lineディレクティブってghcは認識してくれるんだっけ?
0959デフォルトの名無しさん2012/10/09(火) 23:50:18.78
自分で調べろカス
0960デフォルトの名無しさん2012/10/10(水) 01:02:17.60
cppをプリプロセッサとして使えるらしいからOKのはず
0961デフォルトの名無しさん2012/10/10(水) 01:19:14.02
wxHaskellとgtk2hsの簡単な比較

起動時間比較 wx3秒。gtk0.5秒
導入の簡単さ wxの方が難しい
GUIコードの長さ wxの方が短い

以上、チラ裏でした

0962デフォルトの名無しさん2012/10/10(水) 07:04:24.44
GUIコードの長さってたいして変わらんと思うが

それよりも、wx は ghci 上で動かないのが痛い
0963デフォルトの名無しさん2012/10/10(水) 19:52:51.35
すごいH本でHaskell始めたのですが,質問です.14章1節のWriterでつまずいています.
エラーになってる関数は使っていませんが気にしないでください...
http://ideone.com/BXd8X
なコードが
Hoge.hs:7:18:
Couldn't match expected type `(a0, b0)'
with actual type `Writer w0 a1 -> (a1, w0)'
In the second argument of `($)', namely `runWriter'
In the expression: fst $ runWriter
In an equation for `getValue': getValue = fst $ runWriter
というコンパイルエラーで落ちるのですが,どこが悪いのでしょうか?
runWriterの引数の型を間違えていると読めますが,どうおかしいのか私にはわかりませんでした.
0964デフォルトの名無しさん2012/10/10(水) 20:19:27.49
>>963
(fst $) の型は (a, b) -> a だ。
これは、(fst $) は (a, b) 型の値に適用して a 型の値を返す、という意味だ。

あなたのプログラムでは、(fst $) を runWriter に適用している。

では、runWriter の型は (a, b) なのか?

違うよね。
runWriter の型は Writer x y -> (y, x) だ。

(fst $) は (a, b) 型の値に適用することが期待されているのに、
実際のプログラムソースでは (Writer x y -> (y, x)) 型の値に適用しようとしている。
マッチしないよ。

というのがエラーの内容だ。


で、あなたがやりたいことが getValue の型の通りだとするなら、
そこは fst $ runWriter ではなく fst . runWriter なのでは?
0965デフォルトの名無しさん2012/10/10(水) 20:41:36.50
>>964
なるほど,ありがとうございます.
格好つけてポイントフリースタイルみたいな書き方をしたが,実際にはポイントフリースタイルと($)を混同していたのがそもそもの問題だったのですね...
0966デフォルトの名無しさん2012/10/11(木) 06:41:52.69
fun $
このセクションの発想はなかったわ
0967デフォルトの名無しさん2012/10/12(金) 09:07:31.80
ぬるほ
0968デフォルトの名無しさん2012/10/12(金) 10:32:14.34
カッ
0969デフォルトの名無しさん2012/10/12(金) 17:24:54.69
Haskell Platform 2012.4.0.0 は順調なんでしょうか。
0970デフォルトの名無しさん2012/10/13(土) 03:58:23.47
Windows2000への再対応を切に望みます
なんせサポートをうたってるのですから
0971デフォルトの名無しさん2012/10/13(土) 04:03:13.40
そんなもん窓から投げ捨てろ
0972デフォルトの名無しさん2012/10/13(土) 20:58:29.89
せめて最後にこれぐらい紹介してあげなよ。
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.362
0973デフォルトの名無しさん2012/10/14(日) 23:38:32.86
すいません、今、Mathematicaで行っている計算を
Haskellに移行したいと思ってます。

Haskellの学習はまだです。

Mathematicaでは次の操作を行って株価の一覧を作成してます。(そのほかにもいろいろな指標を計算してます)

・株式コードからURLを作成する
・URLが指定するWebページのHTMLを取得する
・HTMLから正規表現で現在の株価を抜き出す

これはHaskellでも可能でしょうか?
ライセンスの問題でMathemaricaを使い続けることが難しくなりました。

考え方が近いようなので関数型言語への移行が適切かなと思ってます。
(ExcelVBA版は作ったのですが速度に問題がありました…)
0974デフォルトの名無しさん2012/10/15(月) 00:37:25.30
可能

次の方どうぞ〜
0975デフォルトの名無しさん2012/10/15(月) 06:57:34.90
むしろmathematicaってそんなことできたんだ…
別に関数型言語じゃなくてもpythonとかperlみたいなLLでいい
0976デフォルトの名無しさん2012/10/15(月) 08:09:37.27
むしろその程度Haskellでできないと思う余地があるのか
0977デフォルトの名無しさん2012/10/15(月) 08:13:36.07
出来ない言語があったら教えてもらいたいレベルだな
0978デフォルトの名無しさん2012/10/15(月) 08:17:17.71
mathematicaすげえええええええええ
0979デフォルトの名無しさん2012/10/15(月) 08:18:09.00
gawkですら出来るレベルだからね
0980デフォルトの名無しさん2012/10/15(月) 08:53:03.35
>>976
>>977
すいませんでした。
VBAで作り直したとき、Webからのデータ取得や正規表現は
外部からCreateObjectで読み込んだので少し不安でした。
0981デフォルトの名無しさん2012/10/15(月) 10:50:24.53
Do not talk about Mathematica.
0982デフォルトの名無しさん2012/10/15(月) 13:22:19.13
>>973
>ExcelVBA版は作ったのですが速度に問題がありました…

この書き込みで最も有益な情報
0983デフォルトの名無しさん2012/10/15(月) 23:19:24.68
excel vbaのせいではない気がする
0984デフォルトの名無しさん2012/10/15(月) 23:42:55.22
こいつら低脳だな
実用的なことを一切やっていない
マジ低脳の極み

Perlが一番最高

こんなくそ言語やって何が楽しいんだ?低脳だろうなこいつら
インテイゲンチャきどっててきもちわりいわ
0985デフォルトの名無しさん2012/10/16(火) 06:03:39.02
>>973
webからデータ取得だけならLLで、って意見に同意。
もっともmathmaticaでも関数型プログラミング可能と謳っているからまずは
自分のコード見直してみたら?
Homeライセンスならグアム/サイパンでも行ったときホテルからUSDで買えば安いよ。
0986デフォルトの名無しさん2012/10/16(火) 19:44:48.95
ハスケラーが他の言語をdisっているのは
自信のなさの裏返しなのかな?
0987デフォルトの名無しさん2012/10/16(火) 19:49:46.79
他の言語をdisってるのよりも
他の言語ユーザをdisってるほうが良く見るな

馬鹿には無理、ってね
0988デフォルトの名無しさん2012/10/16(火) 21:19:33.55
Haskellが難しく感じるのはほかの言語に慣れてるからでしょ
「○○言語ならこう書けるのに、なぜこんな書き方をさせるんだ!!!」みたいな。
まったくのプログラミング未経験者ならCやJavaよりむしろ簡単だと思う
0989デフォルトの名無しさん2012/10/16(火) 21:26:45.58
あと何年かしたら普通にHaskellでプログラミング覚えたって世代が出てくるだろうからそれからだな
0990デフォルトの名無しさん2012/10/16(火) 22:37:05.09
>>988
> まったくのプログラミング未経験者ならCやJavaよりむしろ簡単だと思う

それはどうだろうか。
私は、どちらを先に始めたかではなく、それに触れるまのでの間に
どのような考え方に慣れているかに依ると思う。

人はたいてい小学生(あるいはそれ以前)の頃からずっと、
課題を解決するのに「手順」を考える事を学習させられてきた。
その中で、更に「状態変化・状態遷移」の概念も知らず知らずすり込まれる。

問題 X を解決するには A をやると x になって、
それから B をやると y になるから、
最後に C をやればできるよ、というような感じで。
理科の実験手順も、料理のレシピも同じ。

この考え方は C や Java を理解するのに適している。

静的な、宣言的な考え方なんて、手続き的な考え方に比べれば、
学校教育の現場でほとんど出くわすことはないだろう。
たとえ出くわしても、意識しなければ素通りしていくだけで、身にならない。

だから、そんな人間が初めてのプログラミング言語として関数型言語に触れても、
今までの生活では意識してこなかった考え方を求められる事に変わりはない。

手続き的な考え方よりも宣言的な考え方の方により慣れ親しんで初めて、
C や Java より Haskell の方が簡単と感じる可能性が出てくるのだと思う。
0991デフォルトの名無しさん2012/10/16(火) 23:23:49.59
関数型が普及していくのは間違いないけど、それがHaskellとは限らないな。
0992デフォルトの名無しさん2012/10/17(水) 00:00:38.66
学校教育の現場か
数列の帰納的定義をやらずに終わる高校もあるのかね
0993デフォルトの名無しさん2012/10/17(水) 00:05:17.59
ポインタや右辺値・左辺値あたりも結構なハードルだから
決して手続き型が初心者に易しいわけではない
0994デフォルトの名無しさん2012/10/17(水) 00:22:23.75
おまいら次スレ大丈夫ですか
ム板の人は特に無頓着な気がする
0995デフォルトの名無しさん2012/10/17(水) 00:47:21.37
他人任せな奴も多いよね
0996デフォルトの名無しさん2012/10/17(水) 01:01:42.06
初心者の世界では、変数はaからzだけで足りるし再帰もポインタもない
0997デフォルトの名無しさん2012/10/17(水) 03:11:20.71
>>990
日常のなかで宣言的な考え方というのは確かに僅少ですね
最初に出会うのは‥‥数学的帰納法か?
0998デフォルトの名無しさん2012/10/17(水) 03:44:48.81
Little Haskeller キボンヌ
0999デフォルトの名無しさん2012/10/17(水) 08:10:34.89
次スレ
ttp://toro.2ch.net/test/read.cgi/tech/1350428908/
1000デフォルトの名無しさん2012/10/17(水) 08:15:46.08
>>999
スレ立て乙
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。