[過去ログ] 関数型プログラミング言語Haskell Part4 (1001レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
502: 2006/04/18(火)21:26 AAS
一方ロシアはJavaを使った。
503: 2006/04/18(火)21:40 AAS
>>492
型に慣れてないなんて時代遅れだね。
504: 2006/04/18(火)21:42 AAS
型がないと、ある種のパラドックスに陥る。
それは容易にバグに結びつく。
強い型付きの言語というのは、そういう意味で安全なんだよ。
505: [俺ってオモスレーwwwsage] 2006/04/18(火)21:43 AAS
型型うるせえな!!
506(1): 2006/04/18(火)22:12 AAS
>>497
reading A Gentle Introduction to Haskell Version 98 ... done
reading Twe Dozen Short Lessons in Haskell ... (Interrupt)
reading Yet Another Haskell Tutorial ... (Interrupt)
error: unresolved keywords: class instance deriving monad '...' '>>=' ...
やっと477が普通に見えてきたところです。
相互再帰は普通にできるんですね。
省5
507: 2006/04/18(火)22:17 AAS
型推論はなるべく使わないほうが良い。初心者なら特に。
508: 2006/04/18(火)22:23 AAS
>>497
そういえば以前MLでfoldを使わずに相互再帰で走査していくときに型推論が役に立ったことがあります。
509(1): 2006/04/18(火)22:53 AAS
>>497
478はXML文書をPythonのElementTreeのように手軽に扱えるライブラリはないかと思って、Haskellに限らずいろいろ探しているときに考えていたことの一部です。
ElementTreeで日本語を読み込むにはかなり細工が必要で、またテキストをエレメントと対等に扱わないので検索がやりにくかったです。
外部リンク:haskell.orgによるとGHC6.6からUnicodeがHaXmlでも普通に扱えるように読めるんですが、ご存知ありませんか?
510(1): 2006/04/18(火)23:23 AAS
>>509
現在のGHCは入出力の際にエンコーディングをiso-8859-1と仮定するので、
日本語を正しく扱うことは出来ません。
ただし、情報が失われる変換ではないので、文字列をブラックボックスとして操作する限りでは
問題は起こらないかも知れません。
実際、私はHaXmlを日本語を含む文書を操作するのに使っています。
上記の問題はGHC付属のIOライブラリの欠陥であって、プログラムからUnicodeの文字を扱うこと自体は正しく出来ます。
省6
511: 2006/04/18(火)23:24 AAS
>>492
関数を書いたあと推論を固定したいときはコピペして宣言、気にくわなければ型に手を加える、で十分だと思います。
512(2): 2006/04/18(火)23:27 AAS
関数型言語、特にHaskellのようなpureな言語では、型を見るだけでどういう関数なのかほぼ解る。
a -> a 型の関数はまず間違いなく id だし、a -> b -> b 型は、第二引数をそのまま返すものであろう。
a -> Int とかなら、何を適用してもIntの定数を返す関数と推測される。
(a -> b) -> [a] -> [b] なんていう型の関数があったら、返値の要素は、第一引数である関数で
もって第二引数の要素から作ったものである。
自分で書いた関数が (a -> b) -> a -> a とか推論されたら、第一引数の関数またはその返値を
どこかで捨ててしまっている。
省1
513: 2006/04/19(水)00:30 AAS
>>512
>自分で書いた関数が (a -> b) -> a -> a とか推論されたら、第一引数の関数またはその返値を
>どこかで捨ててしまっている。
> 型推論を活用しながらコーディングってつまりこういうことだと思っているが、違う?
だいたいそう。
1) 予想した型と推論された型が一致しなければ、実装か、そもそもアルゴリズが間違っていた
2) 予定の型を書いておいて型エラーが無くなるようにコーディグする
省8
514(1): 2006/04/19(水)01:04 AAS
>>506
外部リンク[cpp]:hs.or.tp
C++版。
C++には関数的なリストが用意されていないので、vectorと副作用でごまかした。
もちろん、自分で定義すればいいんだけど、面倒だったので。
515: 2006/04/19(水)01:07 AAS
>>510
参考になりました。ありがとう。
fptoolsでHaXmlをダウンロードしてあるのにghc6.4には何故かインストールされてませんでした。libraries/以下だけを再ビルドする方法も思い出せません。そもそもできたかどうか。トップからビルドし直すとまた信じられないような時間かかるし。
ghcはインストールがうっとうしいです。FFIもいっぱいあって、バージョン間の互換性も低いし。Makefileを書きかえてライブラリを追加したりとか。
インストールが成功したころには全然別の所に行ってしまってることが多いのでもうしばらくして試してみます。
reading 2ch/code321.txt(continued) Yet Another Haskell Tutorial(continued)...
516: 2006/04/19(水)01:16 AAS
>>514
わざわざありがとう。
これがHaskellと同じように読み書きできるんですね。恐れ入りました。
ちょっと頭のリソースが足りないので、今度Boostを試してみるときに参考にします。
517: 2006/04/19(水)13:49 AAS
ghcのコンパイルに 100時間以上かかってるんですがこんなもんですか?
前は半日くらいでできてたはずなのに。
518: 2006/04/19(水)17:33 AAS
いくらなんでも時間かかりすぎ
どんなコンピュータだよ
519(1): 2006/04/19(水)20:58 AAS
GHC 6.4.2来たよ
520: 2006/04/19(水)22:22 AAS
いつもソースからビルドしてるんだけど、バイナリよりどれだけ速いか比べたことある人いませんか?
521: 2006/04/19(水)22:33 AAS
どう考えてもビルド時間を回収できるほどには速くなりません。
522: 2006/04/19(水)22:48 AAS
じゃあバイナリにします。ありがとう。
523(1): 2006/04/20(木)07:17 AAS
>>512
っ [ P. Wadler, Theorems for Free! ]
524: 2006/04/20(木)07:49 AAS
>>523
もちろん読んでる。Reynoldsも。
525: 2006/04/20(木)21:16 AAS
もっと議論したまえ。
526:  ̄ ̄\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 2006/04/20(木)23:12 AAS
AA省
527(1): 2006/04/21(金)19:26 AAS
過去ログ読まずに質問するですがHaskellで言語処理系実装するのってどんなメリットありますか?
Microsoft Researchの人が書いてた埋め込み言語のコンパイラHaskellで書くとこんなにスゲェぜ!
風なペーパーを見掛けて気になってたんですが、どこで見掛けたのかすらわからなくなって
もう気になって気になって・・・
+compiler +"in haskell" とかでググってもそれっぽいの出てこないし。あぁ気になる。
528(1): 2006/04/21(金)19:42 AAS
Haskellはあらゆる開発であらゆる言語を遥かに凌駕するのは周知の事実。
だから言語処理系の実装も例外ではないというだけの話。
特にI/Oが比較的単純でロジックの実装に集中できるから得意中の得意といっていい。
529(1): 2006/04/21(金)20:21 AAS
Haskellと比べれば他の言語は子供だまし。
あらゆる分野で断トツ。
530: 2006/04/21(金)20:35 AAS
学者もどきが礼賛してるただの
一風変わったオモチャだと思ってるけど違うの?
531: 2006/04/21(金)20:42 AAS
.NETに連携できればなぁ。グルーはC#でかくから。
532: 2006/04/21(金)21:47 AAS
Haskell にも格好良い渾名がいるんじゃないだろうか。
533: 2006/04/21(金)22:07 AAS
唯一Haskellに対抗できそうなのがC++
534: 2006/04/22(土)09:47 AAS
「ふつうのHaskellプログラミング」マダー(AAry
Racc本の青木峰郎さんに期待age
535: 2006/04/22(土)10:24 AAS
俺も入門Haskellが糞だったのでふつうのHaskellプログラミングに期待
536: 2006/04/22(土)11:14 AAS
勝手にナイトメアHaskellにも期待
537(5): 2006/04/22(土)16:41 AAS
haskellの悪夢か…
プログラム中で定数として色々な計算に使っていた値(重力定数とか)を、
「コマンドラインの引数で値を指定できるようにして」といわれた時とか。
main以下のほぼすべての関数に、その値を表す引数を追加する
(もしくはmonadを使ってその受け渡しをラップする)羽目に…
こういう時だけは破壊的なMLが羨ましくなる。
538(1): 2006/04/22(土)16:47 AAS
>>537
激しく同意。
パラメータつきモジュールみたいな言語要素が欲しい。
\(g :: Double) -> module Foo where ...
539: 2006/04/22(土)16:55 AAS
>>537→バグが増える
540: 2006/04/22(土)17:06 AAS
>>537
つ Implicit parameters
541: 2006/04/22(土)17:19 AAS
確かに他の言語ではあり得ないおぞましさがあるからな
542: 2006/04/22(土)17:54 AAS
実際 Haskell って「可変性」って観点からはどういう評価なん?
543(2): 2006/04/22(土)18:05 AAS
>>538
こういうのは?
data Foo = Foo {f1 :: ..., f2 :: ..., f3 :: ...}
ConstructFoo g = Foo f1 f2 f3
where
f1 = ...
f2 = ...
省1
544: 2006/04/22(土)18:24 AAS
>>543
それもちょっと考えたけど、いちいち型を定義するのが面倒だし、
対話環境から使いにくいような気がした。
でも見直してみたら
First-class Modules for Haskell
外部リンク[htm]:research.microsoft.com
もそんな感じで実装してあるな。
545: 2006/04/22(土)19:15 AAS
まあ最初から可変になることがわかっていたら色々手もあるだろうが、
後から可変にするのはやっかいだね。
546(1): 527 2006/04/22(土)21:49 AAS
>> 528, 529
マジですか。ちょっと勉強してみようかなとか思ってきた。
HaskellにLispのマクロみたいな機能ある?コレがないと暮らせないんだけども。
547: 2006/04/22(土)22:14 AAS
>>546
勉強したいというなら止めないが、>>528-529を真に受けるなよ。
>HaskellにLispのマクロみたいな機能ある?コレがないと暮らせないんだけども。
標準じゃないけど、template haskellってのがある。
548: 2006/04/23(日)07:16 AAS
>>543
538ではないが、もう少し詳しく教えてください
549: 2006/04/23(日)07:36 AAS
>>537 541, 545
Haskell への憧れが一気に冷めました
時代の最先端をいく言語だと思ってたんですが
550: 2006/04/23(日)08:44 AAS
Hugsって死滅しちゃうの???
551: 2006/04/23(日)09:23 AAS
ghciがあの遅さではhugsの代わりとしては使えない。
552: 2006/04/23(日)13:31 AAS
まあいろいろ考えると結局LISP最強なんだな
553: [&] 2006/04/23(日)18:56 AAS
>537 cleanなら getEnvironmentVariable で環境変数を使う手があります。
worldが関係ないので。
554(1): 2006/04/23(日)22:33 AAS
HaskellのIOが使いづらい理由の一つは、世界の状態に影響をあたえる動作と
そうでない動作を区別しないことじゃないだろうか、とふと思った。
getHomeDirectoryとかreadArrayなんかの読み出し動作は
相対的な実行順序を指定せずに使うことができるべきだよな。
555(1): 2006/04/23(日)23:25 AAS
>>554
読み出すだけの動作は、影響を与えないが、
「影響を受ける」から、やはり実行順序依存なのだが。
純関数的なものはモナドに入れずに、例えばdo構文の外で
let, where束縛すりゃいいし。
556: 2006/04/24(月)02:20 AAS
STとSTRefの使い方がやっと分かった。
こんな仕組み作るぐらいなら素直にimperative使えよ・・・。orz
557: 2006/04/24(月)08:11 AAS
>>555
いや、「世界に影響を与える」動作との相対的な実行順に依存するのは分かるんだが、
v[i] = v[i-1] + v[i+1];
みたいな操作でreadArray間の実行順を指定するのは馬鹿馬鹿しい。
厳密には違う話かも知れないけど、
home <- getHomeDirectory
h <- openFile (home++"/.foorc")
省4
558: 2006/04/24(月)08:14 AAS
おっと、openFileの第二引数を付け忘れた。まあ察してくれ。
559(1): 2006/04/24(月)14:29 AAS
Audrey Tangが性転換してたとは知らなかった
560: 2006/04/24(月)18:48 AAS
>>559
Runtime Typecasting ね
外部リンク[html]:pugs.blogs.com
561: 2006/04/24(月)22:03 AAS
入門Haskell結構売れてるみたいなのに、このスレが初心者質問で賑わわないのはなんでだろう。
562(1): 2006/04/24(月)22:19 AAS
読者が理解できてないから。
563: 2006/04/24(月)22:27 AAS
日経ソフトウェア読んだ人いる?
あのDQN雑誌にHaskellの記事が載ったそうだけど。
564: 2006/04/24(月)22:28 AAS
>>562は本物の馬鹿です。
565(1): 2006/04/25(火)00:22 AAS
生産性ねぇ.経験からいうと静的型付け?と変数への代入がないことが間接的に生産性をあげてるとは思う.
手続き型言語とかオブジェクト指向言語でプログラム書いてると,つねにプログラム全体を意識してないと
きちんとしたプログラムを書けないわけですよ.「この変数 hoge はこのループに入る前にこの関数でこういう処理を
されたから値は A か B か C のはず.だから今書きかけのこの行で foo という処理をしても問題ない.」てな感じ.
最近集中力が落ちてきてるうえに日常的にプログラムを書くわけではない僕にはこれが辛い.
ちなみに先日 elisp でプログラム書いてて,型をあわせるのに随分気を使ったです.
でも Haskell だと
省6
566: 2006/04/25(火)00:27 AAS
ま,Haskell で書いたプログラムの行数は合計しても三桁行程度の素人の意見だから
参考にならんかしらんけど.
567(1): 2006/04/25(火)00:50 AAS
プログラムの正当性とか考え始めると、C みたいな言語は使いにくいよね。
一応 C で書くときはHoare論理を意識してるけど、かなりめんどい。
568: 2006/04/25(火)01:01 AAS
>>567
お前はHoare論理と書きたかっただけとちゃうんかと・・
569: 2006/04/25(火)02:54 AAS
得意げな顔して何が、Hoare論理を、だ。
お前は本当にHoare論理を意識してるのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、Hoare論理って書きたいだけちゃうんかと。
570: 2006/04/25(火)10:57 AAS
ほ、ほーっ、ホアアーッ!! ホアーッ!!
571: 2006/04/25(火)13:36 AAS
声優オタは詩ね
572: 2006/04/25(火)15:43 AAS
>>565
>頭は使うかもしれないけど神経は使わなくてよい.
>頭を使うと後で生かせるけども神経を使っても疲れるだけ.
なるほどね。でも現状CやJavaがこれだけ使われてる時代において、
神経を使うことを嫌うっていうのは、もうプログラマとしての適性を
亡くしてしまったともいえるな。
もしかしてプログラマの適性を亡くしてしまった人、もしくは最初からない人が
省1
573(1): 2006/04/25(火)16:04 AAS
とりあえず紳士的にHaskellお勉強中だけどこのスレ読んでてつまらん。
もっとコードベースのお話してよ。
574: 2006/04/25(火)16:25 AAS
>>573
同意。
しかし、ネタがない。
575: 2006/04/25(火)16:36 AAS
くだすれHaskellなんてどうでしょう?
576: 2006/04/25(火)16:46 AAS
ここだと何か問題でもあるのか?
577: 2006/04/25(火)16:50 AAS
回答者のレベルが低い。口先だけ
578: 2006/04/25(火)16:51 AAS
それは新しくすれ建てて解決する問題じゃないと思うが。
579: 2006/04/25(火)17:13 AAS
では ナイトメア言語Haskell Part1 で
580(2): 2006/04/25(火)18:04 AAS
数理論理学勉強してない人が、このタイプの言語使ってみたところで、言語の目的とかが見えないんじゃないかな・・と思う。
言語仕様を覚えるだけなら誰でもできるけど、本質的なことは本当に理解している人しか見えてこないよね。
581: 2006/04/25(火)18:05 AAS
はいはい雑談雑談
582: 2006/04/25(火)18:06 AAS
雑談以外に何をしろと?
上下前次1-新書関写板覧索設栞歴
あと 419 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.022s