関数型プログラミング ..
444:デフォルトの名無しさん
05/03/10 00:58:20
真理です
445:デフォルトの名無しさん
05/03/11 00:20:02
生活苦や迫害から逃れるため北朝鮮を脱出した元在日朝鮮人
大阪府八尾市に支援者が用意した2部屋のアパートで
月約17万円の生活保護と支援者からのカンパで暮らす。
ソウルに住む長男も呼び寄せたいというが、
「いまの生活保護額では厳しい」と悩む日々だ。
URLリンク(www.asahi.com)
確定申告済ませたか?
俺も17万円と2部屋のアパート欲しい。
豊な生活送るには、17万円ポッチじゃ、まだタリン。
おまえ等の税金もっともっと よ こ せ!
446:デフォルトの名無しさん
05/03/11 00:31:20
ghcならコンパイル可能
447:デフォルトの名無しさん
05/03/11 00:43:13
ghcだからこそコンパイルエラーの結果に終わります。 こんなんに真値判定出されてたまりますか。
448:デフォルトの名無しさん
05/03/12 20:33:41
URLリンク(www.haskell.org)
449:デフォルトの名無しさん
05/03/12 23:28:12
新たな教典が来ましたね。
もちろんバグはありませんので、安心してご利用ください。
450:デフォルトの名無しさん
05/03/13 02:47:22
>>449 =モズクズ様↓
URLリンク(www.gema3.net)
451:デフォルトの名無しさん
05/03/14 14:32:35
SOE本とCraft本で、どちらがお勧めですか?
452:デフォルトの名無しさん
05/03/14 16:41:23
>>451
両方
453:デフォルトの名無しさん
05/03/14 23:22:35
今年度は、Hugsの新版出ないの?
454:デフォルトの名無しさん
05/03/15 00:02:58
Mar 2005 releaseがでてるけど
455:デフォルトの名無しさん
05/03/15 08:28:37
あれ、いつの間に。
456:デフォルトの名無しさん
05/03/15 08:32:05
Charが、うにコードに対応したんだ。
457:デフォルトの名無しさん
05/03/20 10:13:33
hugs98-Mar2005-patched.tar.gzキテル━━━(゚∀゚)━━━ !!!!!
updated with urgent bug fixes
458:デフォルトの名無しさん
05/03/23 00:58:19
同じ関数型言語でもHaskellのほうがSchemeより易しくない?
SMFの解析を書き始めてるけど、コストをあまり考えすぎなくてよい気がするし、
Schemeよりも簡潔に書けるし、実行速度もいくぶん速い。
いまのところ、手続き型の処理を書かなくても
(コストを気にしない限りは)それほど書くのが難しくない。
ただ、効率を気にしだすと書き換えるのは難しいのかな?
459:デフォルトの名無しさん
05/03/23 07:53:51
素朴な疑問だが、lazyな言語で割り込み処理(シグナル等)はどうやって書くのだろう。
割り込み時の状態はどう定義されるのだろうか。
460:デフォルトの名無しさん
05/03/28 13:39:35
>>459
もれも良く分からんが、MIT pressから出てるSICPっていう本読んでると
無限ストリームっていうのが出てくるから、それ使うんじゃない?
A Gentle Introduction to Haskellっていう、Haskellの紹介文書
にも無限ストリームを使ったクライアントーサーバー処理の例が出てくるよ。
461:デフォルトの名無しさん
05/03/28 15:15:52
数学理論に立脚した言語で現実世界を対象としたプログラミングを行うことは間違いだ
462:デフォルトの名無しさん
05/03/28 15:16:30
>>461
はい?もう一度言ってもらえますか?よく見えなかったので。
463:デフォルトの名無しさん
05/03/28 18:39:05
>>459
たぶんlazyな言語に対して割り込みのformal semanticsを与えた人はいないと思う。
もの凄く難しい。
>>460
それは単なる入出力ではなかろうか。
464:デフォルトの名無しさん
05/03/28 20:05:44
イベントや割り込みであろうが入出力には違いないだろ
辻褄が合ってればいい
465:デフォルトの名無しさん
05/03/28 20:08:30
割込みは「単なる」入出力とは違うってことだろ
466:デフォルトの名無しさん
05/03/28 23:35:57
ghcでバイナリデータをバイト単位で扱うときって、Word8を使えばいいの?
Charだと数値との比較ができなくて不便。
467:デフォルトの名無しさん
05/03/29 01:36:32
MacOS X 10.3 で Haskell を使うのにお勧めの方法は何でしょうか?
Hugs98 か ghc になると思うのですが。 fink には入っているのは
どちらも Hugs98 2001-Feb と ghc 6.2 で少々古かったです。
468:デフォルトの名無しさん
05/03/29 02:58:49
Mac使うのを止めるのがオススメ!
469:デフォルトの名無しさん
05/03/29 04:16:23
そうだね。
爪弾きにされ、余計な苦労ばかり増えて良いところなんて一つもないし。
470:デフォルトの名無しさん
05/03/29 08:45:40
finkに頼らんでもHugsなら自分でmakeすればOKだし
GHCは本家にバイナリが用意してある
471:デフォルトの名無しさん
05/03/30 02:58:36
マイナー言語やる上で Mac は悪くないプラットフォームなんだけどね。
ML も主要なのは殆ど対応しているし。
472:デフォルトの名無しさん
05/03/30 03:06:14
haskellよりもMLの方が文法綺麗じゃないですか??そんなことないかな…
473:デフォルトの名無しさん
05/03/30 03:15:35
ML、特にSMLはDefinitionが出て以来そのままだからなあ(97年に改訂されたけど)。
Haskellの方も一応98はあるけど、そうじゃない部分は随時面白い話があるたびに
手を入れてきた感じなのは否めないのかも。
474:デフォルトの名無しさん
05/03/31 19:07:35
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)
この 2 冊が欲しいのですが、中を確かめてから欲しいので
都内で在庫がある店知りませんか?
東京駅〜秋葉原〜神保町あたりだと助かります。
475:デフォルトの名無しさん
05/03/31 22:26:11
グランデに電話してみれば?
476:デフォルトの名無しさん
05/03/31 22:33:33
> 474
Haskell: The Craft of Functional Programmingはかなりおすすめです。
買って損はないと思います。
477:474
皇紀2665/04/01(金) 10:58:40
結局 Amazon で注文しました。
URLリンク(www.hatena.ne.jp)
ここに載っててありそうなところには電話かけましたが
店頭に在庫はないみたいでした。Amazon がない時代は
みんなどうしていたんだろう…。大学生協で取り寄せかな。
478:デフォルトの名無しさん
皇紀2665/04/01(金) 18:28:57
>>474
神田行けばいくらでもあるだろ。
デカイ本屋で在庫あるか訊いてみろ。
479:474
皇紀2665/04/01(金) 19:57:19
>>478
私には >>477 以外に出てくる本屋以外にデカイ本屋は知りません。
おすすめのコンピュータの洋書をあつかっている店の名前が分かる
なら教えてください。
480:デフォルトの名無しさん
int 2ch =05/04/01(金) 20:48:22
>>479
URLリンク(www.book-kanda.or.jp)
URLリンク(www.book-kanda.or.jp)
481:474
int 2ch =05/04/01(金) 21:56:48
明日、神田を周ってこようと思います。
ありがとうございました。
482:デフォルトの名無しさん
int 2ch =05/04/02(土) 12:12:07
>>474
君見て自分も思い出したように買ったよ
まあ回っても見つからないと思うよ
483:474
05/04/03 11:46:47
昨日行ってきました。
水道橋駅を降りて、神保町駅まで歩きその周辺の本屋を巡りました。
コンピュータの洋書を扱っているのが、三省堂の本店しか見つける
ことができませんでした。在庫はあらず。
いくらでもあるとのことなのですが、探しかたが悪いのか、
>>482 さんの言う通りなのか不明です。
Amazon から Haskell: The Craft of Functional Programming
は届いたので読みすすめてます。結構面白いです。
484:デフォルトの名無しさん
05/04/04 04:15:17
>>483
> コンピュータの洋書を扱っているのが、三省堂の本店しか見つける
> ことができませんでした。
え、マジ? それは探し方が悪いのでは。
485:474
05/04/06 17:39:21
そうですよね。もっと探検してみます。
486:デフォルトの名無しさん
05/04/07 12:56:04
オレも他にはゆうりんどう(字わからん)くらいしか思いつかない。いいとこあるなら教えてcray。
487:デフォルトの名無しさん
05/04/07 14:51:05
洋書なんて読むなよこの非国民が
488:デフォルトの名無しさん
05/04/07 15:41:08
英語も読めないの?国辱。
489:デフォルトの名無しさん
05/04/07 20:21:03
洋書 = 英語書かよ、この拝米主義者め
490:デフォルトの名無しさん
05/04/07 20:31:05
英語=拝米の方がよっぽど(ry
491:デフォルトの名無しさん
05/04/07 20:48:29
Haskell: The Craft of Functional Programming は英語だろ?
国辱どもが。
492:デフォルトの名無しさん
05/04/07 20:57:10
当たり前のことを言うな一知半解野郎
493:デフォルトの名無しさん
05/04/07 21:30:11
これがゆとり教育の弊害か。確かに国辱。
494:デフォルトの名無しさん
05/04/07 22:14:10
>>487-493
レベルの低い話は止めろ
495:デフォルトの名無しさん
05/04/08 22:34:40
科学とかに関しては日本なんてどうでもいい罠。
496:デフォルトの名無しさん
05/04/09 09:19:13
Haskellの勉強してると類(kind)という言葉が出てくる。
手持ちの関数型言語の参考書では見かけないので、類を扱うのは比較的
珍しいことなのかと思うのだけれど、どう?
なんでHaskellには類が必要なの?
497:デフォルトの名無しさん
05/04/09 13:07:49
Haskellだと、普通の多相型([]とかMaybeとか)に加えて
「型構築子から型構築子への写像」(StateTとか)のようなものを定義できるから、
単に「無引数の型構築子」だとか「1引数の型構築子」とかいうだけじゃ不十分だからだと思う。
まあ、似たような機能のあるC++では「類」なんて聞いたこともないんだけど。
関数型言語についてはよく知らんので誰かフォローよろしく。
498:デフォルトの名無しさん
05/04/09 13:52:32
WinXPで動くHaskellのコンパイラってある?
499:デフォルトの名無しさん
05/04/09 13:59:36
>>498
え?GHCがwindowsで動くでしょ???
500:デフォルトの名無しさん
05/04/09 14:23:03
∩ノ
/ つ
/ / / ̄ ̄ ̄ ̄
∧ ∧/ < 500ゲットぉぉぉぉ!
⊂(゚Д゚ ) 彡 \
⊂彡  ̄ ̄ ̄ ̄
____●●●___ バイーン
/ 〇 〇 \|/ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄|
501:デフォルトの名無しさん
05/04/09 17:40:30
498ではないが、
WINXP sp2 で GHC のインストーラはエラーで落ちました。
hugs98 は簡単にインストールできました。
502:デフォルトの名無しさん
05/04/10 11:03:22
言語仕様を見るとHaskellの方がはるかに機能的に見えるのだけど、実用面を見るとHaskellはボロボロ。
結局、開発するならOCamlに軍配があがるんだよね。
503:デフォルトの名無しさん
05/04/10 11:31:38
だから品質には期待するなとあれほど(ry
504:デフォルトの名無しさん
05/04/10 13:23:42
だからghcにバグはないとあれほど(ry
505:デフォルトの名無しさん
05/04/11 11:57:34
>>497
Haskellよく知らんけど、合ってるんじゃん?
C++のテンプレートは展開してからチェックするので、いらないんでしょ。たぶん。
506:デフォルトの名無しさん
05/04/11 12:08:44
>>463
>たぶんlazyな言語に対して割り込みのformal semanticsを与えた人はいないと思う。
>もの凄く難しい
Haskellよく知らんので何か勘違いしてるかもしれんが、
URLリンク(research.microsoft.com)
のA semantics for imprecise exceptionsの5.1節とか
Imprecise Exceptions, Co-Inductivelyは違うの?
507:デフォルトの名無しさん
05/04/11 20:32:57
Haskellで正規表現は標準でサポートされているのですか?
508:デフォルトの名無しさん
05/04/11 20:44:09
>>507
URLリンク(www.google.co.jp)
509:デフォルトの名無しさん
05/04/15 17:30:13
>>501
3月21日位にインストーラーが変わっている様なのですが、それでインストールしても
駄目ですか?
当方はXP SP2でインストールできています。
510:デフォルトの名無しさん
05/04/15 19:37:33
つーかインストーラーぐらいちゃんと作れませんか?
511:501
05/04/16 12:07:17
>>509
最新版でインストールもできましたし、ちゃんと動きました。
ありがとうございます。
512:デフォルトの名無しさん
05/04/17 22:00:14
imprecise exception 云々よりどっちかというと Asynchronous exceptions in Haskell の方が該当する希ガス。
513:デフォルトの名無しさん
05/04/17 22:05:22
この言語扱うのに数学の知識必須みたいだな。初めて使ったが…
514:デフォルトの名無しさん
05/04/17 22:19:40
そうなの?どの辺でそう感じた?
515:デフォルトの名無しさん
05/04/17 22:33:46
>>514
いや、大したことじゃないんだけど、集合論とか。
516:デフォルトの名無しさん
05/04/18 01:09:42
文系お断り言語
517:デフォルトの名無しさん
05/04/18 11:59:50
Text.Regex は入力を不必要に最後まで読んでくれたりして微妙に嬉しくないんだよなあ。
518:デフォルトの名無しさん
05/04/18 23:56:27
で、この言語なんて読むんだ?
はすくぇる?
519:デフォルトの名無しさん
05/04/18 23:57:21
ハスケルカリー
520:デフォルトの名無しさん
05/04/20 23:24:41
GHCのコンパイルがなかなか終わらない。
ひょっとして、マシンパワーがかなり必要なの?
普段使っているのはおんぼろラップトップなんだよね。
521:デフォルトの名無しさん
05/04/20 23:45:27
>>520
こちとら、PowerBookG4(867MHz,RAM640MB)で
2ステージ+testsuite が6〜8時間。
522:520
05/04/21 08:32:54
朝起きたら無事終わってた
GHCは普通のコンパイラとは内部構造がかなり違うようですな。
523:デフォルトの名無しさん
05/04/22 20:52:35
某スレでハスケルでGUIは辛いと言われてしまいました。
誰か反論の文句をおねがいします。
524:デフォルトの名無しさん
05/04/22 20:54:26
だからあれほどHaskellは実用アプリケーション作成向きでは無いと(小一時間
525:デフォルトの名無しさん
05/04/22 21:08:24
だからあれほどghcは完璧だと(ry
526:デフォルトの名無しさん
05/04/23 05:07:16
情処の記事を読んで触ってみた。
527:デフォルトの名無しさん
05/04/23 13:52:46
今月からFPの連載だね。
528:デフォルトの名無しさん
05/04/23 23:02:55
FP ってなんですか?
529:デフォルトの名無しさん
05/04/24 00:06:54
一時期流行った自分視点のゲームだろ
530:デフォルトの名無しさん
05/04/24 13:13:48
そりゃFPSだ。
動的計画法のことだろ?
531:デフォルトの名無しさん
05/04/24 18:54:43
Functional Programmingのことかと思った。
532:デフォルトの名無しさん
05/04/24 21:37:20
> 動的計画法のことだろ?
それはDP(dynamic programming)
533:デフォルトの名無しさん
05/04/24 23:26:26
わかりにくいネタでごめん
534:デフォルトの名無しさん
05/04/25 20:31:20
まじでどこで連載してるのか教えてくれ
535:デフォルトの名無しさん
05/04/25 20:56:53
情報処理学会誌ですね。
久しぶりにビニールを開けてみました。
相変わらず読むところが少ない…。
536:デフォルトの名無しさん
05/04/27 11:28:18
辛ければヨーグルトを使う
537:デフォルトの名無しさん
05/04/29 15:38:56
GHCがpanicっていってコンパイル止まったよ。
間違ったソースの中には対応しきれないものがあるようだ。
538:デフォルトの名無しさん
05/04/29 16:42:43
>>537
嘘はいけない。ghcにバグはない。
539:デフォルトの名無しさん
05/04/29 16:49:25
ghc のバグじゃなくてコンパイルするソース側の
540:デフォルトの名無しさん
05/04/29 16:57:37
>嘘はいけない。ghcにバグはない。
なんか凄い事聞いた気がする。
ほんと?
541:デフォルトの名無しさん
05/04/29 18:00:14
ほんとにそうならghcのwebにバグレポートのリンクがあったりしないべ。
542:デフォルトの名無しさん
05/04/29 18:49:30
Financial Planner
543:537
05/04/29 21:25:14
ほんとだよ。GHC cannot process input file. please report this to us とか出たもの。
もちろんソースは正しくないやつなんだが、それでもコンパイラが適切なエラーメッセージを
出せずに止まったことは事実。
544:デフォルトの名無しさん
05/04/29 22:13:13
ああ、拡張機能や新機能を使うと稀に起こるよ、panic。
ちゃんと報告してあげて下さい。
545:デフォルトの名無しさん
05/04/30 18:45:06
例のHaskell連載って公開してるんだね
URLリンク(www.ipsj.or.jp)
546:デフォルトの名無しさん
05/04/30 19:44:34
ハスケル!ハスケル!
547:デフォルトの名無しさん
05/04/30 21:27:04
_ ∩
( ゚∀゚)彡
( ⊂彡
| |
し ⌒J
548:デフォルトの名無しさん
05/05/01 20:14:08
LISP Macro みたいなことできますか?
-- dotimes :: n -> (n -> IO()) -> IO()
dotimes n f = __dotimes 0
where __dotimes i | i >= n = return ()
| otherwise = do (f i)
__dotimes (i + 1)
-- dotimes 10 ( \x -> putStr (show x))
こんなもの?
549:デフォルトの名無しさん
05/05/01 23:02:28
遅延評価だし、アクションが第一級の対象だから、
全ての関数がマクロであるようなものじゃないか?
550:549
05/05/01 23:05:09
なんかピントの外れたことを言ったな。
誰かフォローよろしく。
551:デフォルトの名無しさん
05/05/01 23:19:07
dotimes' n f = sequence_ [ f n' | n' <- [0..n-1] ]
main = dotimes' 10 (putStr.show)
552:無理です。
05/05/01 23:20:58
例えばhaskellのif
if p then c else a
は、
case p of
True -> c
False -> a
の構文糖衣とみなせる。逆でもよい。
マクロの代わりになるかどうかは、自分のifをcaseで定義できるかどうかを
考えてみればわかる。
myif
mycase
さあどうぞ。
553:デフォルトの名無しさん
05/05/01 23:29:12
myif :: Bool -> a -> a -> a
myif p c a = case p of True -> c; False -> a
でいいんじゃないのか?
554:デフォルトの名無しさん
05/05/01 23:37:45
>>553
thenとかelseはどこいった?
555:デフォルトの名無しさん
05/05/01 23:43:22
シンタックスを定義できなてもマクロと言えると思うが。
556:デフォルトの名無しさん
05/05/01 23:49:16
↑それで消費者が納得すると思ってんのか?
557:デフォルトの名無しさん
05/05/01 23:52:37
>>555
関数マクロと言うべきか。
>>548の回答としては、
Q.LISP Macro みたいなことできますか?
A.できません。
558:デフォルトの名無しさん
05/05/02 00:05:54
haskellでは
a `lambda` (a + 1)
の様な表現ができないのが本質的っぽいね。
559:デフォルトの名無しさん
05/05/02 00:11:04
つまり、遅延であろうがなかろうが、LISPのようなマクロを書けるかどうかは
引数評価を自分でコントロールできるかどうかにある。
少なくともLISPのマクロ内に出てくるシンボルみたく、引数の一部を
評価せずにキーワードそのものとして扱うみたいな仕組みがないと。
560:デフォルトの名無しさん
05/05/02 00:25:50
「遅延評価」の意味で「評価」と言うと意味が違うと思う。
引数の評価をコントロールするだけならhaskellでもできる。
「解釈」と言えばいいのかな?
561:デフォルトの名無しさん
05/05/02 00:39:06
LISPのマクロはdefineを含むコードを生成できるけど、Haskellではそのような真似はできないはず。
562:デフォルトの名無しさん
05/05/02 13:13:17
HaXmlで下のinputからoutputのような出力を得たいんですがどのようにすれば
良いでしょうか?
---input---
<function name='deleteBy' type='(a -> a -> Bool) -> a -> [a] -> [a]'>
<description>
similar to <f>delete</f>, but it allows the programmers to supply
their own equality test
</description>
---output---
["deleteBy", "similar to delete, but it allows the programmers to supply
their own equality test"]
<description>の中の<f>の処理がうまく行かず下のような結果になってしまい
ます。<description>の中のテキスト部分だけを抜き出したいです。別リスト
にしないで1つの文字列として。
["deleteBy", "similar to ", "delete", ", but it allows the programmers to supply
their own equality test"]
563:562
05/05/02 13:22:01
コードとサンプルデータを載せます。
import System.IO
import System.Environment
import Text.XML.HaXml
import Text.XML.HaXml.Pretty (content)
main :: IO ()
main =
do ~[arg] <- getArgs
h <- openFile arg ReadMode
str <- hGetContents h
case xmlParse "list.xml" str of
(Document _ _ (Elem _ _ contents))
-> mapM_ print $ map getCont contents
getCont = map content . contFilter
contFilter :: CFilter
contFilter = f `o` (tag "function")
f = cat [ ("name"?) , multi txt `o` (keep /> tag "description") ]
564:562
05/05/02 13:22:59
<module name="List">
<function name='deleteBy' type='(a -> a -> Bool) -> a -> [a] -> [a]'>
<description>
similar to <f>delete</f>, but it allows the programmers to supply their own equality test
</description>
<example>
<in>deleteBy (\x y -> y `mod` x == 0) 4 [6,8,10,12]</in>
<out>[6,10,12]</out>
</example>
</function>
</module>
565:デフォルトの名無しさん
05/05/17 14:30:17
今月の文章は先月の和田先生のよりわかりにくいなあ。
例題をどう解くかの説明が全くなくて、説明もHaskellの説明にはなってるけど
例題のプログラムの説明としてはかなり端折られてるのが原因かな。
566:デフォルトの名無しさん
05/05/17 22:34:11
バイナリファイルを弄りたいんですけど
Haskellでビット演算の関数とか演算子とか
あれば教えてください。
567:デフォルトの名無しさん
05/05/17 23:38:07
:browse Bits
568:デフォルトの名無しさん
05/05/18 22:14:20
>>567
ありがとうっす
569:デフォルトの名無しさん
05/05/20 23:02:42
モナドって全然わかない
570:デフォルトの名無しさん
05/05/20 23:16:00
↑日本語もわかない人
571:デフォルトの名無しさん
05/05/21 01:33:08
最近自分は悟った。
モノイドとか圏論とかの背景思想を無視して
使う立場だけからいうと
モナドは数珠繋ぎ強制ギプスみたいなものだと。
(IO Char)とか(IO Int)とかの型は
CharやIntの値がくるまれたカプセルみたいなもんだ。
ちなみにIO ()の()はCでいうvoid型
return xx とやると普通の値もIOモナドで包むことができる。
572:デフォルトの名無しさん
05/05/21 01:33:49
ただしIOモナドは一度くるんだら中身を取り出す方法がない。
IO型の関数を普通の関数と組み合わせても型違いで
コンパイルエラーになる。
(IO ()ももちろん型違いでエラー)
そこでモナドの中身の値を
橋渡しするアダプタ(>>=)を使う。
結局>>=や>>で(IO xxx)型の関数同士やreturn xxで
数珠繋ぎにするしかないように強制される。
573:デフォルトの名無しさん
05/05/21 01:42:17
そいつは面倒だあ
574:デフォルトの名無しさん
05/05/21 01:43:08
IOモナドってGPLみたいだなとか思った。
575:デフォルトの名無しさん
05/05/21 01:48:49
数珠つなぎのしくみや値を包みこむ性質を利用して
他にもいろいろなモナドがあるし自分でも作れる(かもしれない)
Stateモナドは数珠繋ぎを利用して
IOモナドみたいな状態遷移を自分で作れる。
Maybeモナドは値を包むほうが主眼のモナド
実際の値の代わりにNothingというダミーを
突っ込んでおくことができる。
データベースのNULL値みたいに使える。
576:デフォルトの名無しさん
05/05/21 01:57:53
モナドと聞くと王監督の顔が思い浮かぶのは何故?
577:デフォルトの名無しさん
05/05/21 02:24:06
>>571
>CharやIntの値がくるまれたカプセルみたいなもんだ。
俺にはこの表現がなじまない。
カプセルってのは中身が取り出せてこそのものだよな。
だから、「CharやIntにに関係する何か」くらいの認識しかできない。
578:デフォルトの名無しさん
05/05/21 12:13:59
自分でIO型の関数作れば
前のIO関数から>>=で渡された
中身の生の値をちゃんと自由に扱える。
「取り出す方法が無い」んじゃなくて
「>>=を使って(間接的に)取り出すしか方法が無い」が
正しいかも。
579:デフォルトの名無しさん
05/05/21 12:15:56
monadic I/Oの意味論を破壊して喜ぶって、マゾですか?
580:デフォルトの名無しさん
05/05/21 12:16:44
そーゆーのには、
C言語とアセンブラがお勧め(w
581:デフォルトの名無しさん
05/05/21 12:30:25
>576
ワロス
俺も思いついた
582:デフォルトの名無しさん
05/05/21 16:33:47
もな〜ももなど?
583:デフォルトの名無しさん
05/05/21 20:30:44
>>549
そのとおりだよね。
584:デフォルトの名無しさん
05/05/21 20:44:49
>>583
だからー、
その件はLISPマクロのようには書けないって話だろーが
585:デフォルトの名無しさん
05/05/21 21:04:10
>>559
名前渡し?遅延評価ってそういうことなのでは?
586:デフォルトの名無しさん
05/05/21 21:12:59
名前をキーワードとして扱う?CLtL4の仕様ですか?w
587:566
05/05/21 21:23:20
某バイナリファイルのヘッダ構造体の読み込み関数が
だいたい目処がたってきますた。
ところでdata宣言で作った構造体?にたいする
Javaのシリアライズみたいな仕組みやライブラリって
Haskellにはないんすかね?
リフレクションみたいな仕組みがないと無理?
ファイルフォーマットをリストで与えて結果もリストで返すみたいなのは
できそうだけどそれじゃせっかくの強力な型システムが活かせないような、、
588:デフォルトの名無しさん
05/05/21 21:25:51
>>585
あ、違うか
名前渡してないもんね
普通の意味の値の他に名前も値にできるようでないと圏論的には不完全なようなキガス
589:デフォルトの名無しさん
05/05/21 21:28:21
とゆーことは変数のポインタでいいのかどうか
590:デフォルトの名無しさん
05/05/21 21:39:32
>圏論的には不完全
というと?
591:デフォルトの名無しさん
05/05/22 16:51:02
ちょっと質問です。
二項関係 r の反射的・対称的・推移的閉包に (x,y) が属するかどうかを判定する関数
inEqvCl ってのを書いてみたんですけど、もうちょっとすっきりした書き方とかないでしょうか?
inEqvCl :: Eq a => (a,a) -> [(a,a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x,y) s = chk s y x
where
chk lst v u | v == u = True
| v `elem` ux = True
| otherwise = or $ map (chk lst' v) ux
where
lst' = [ p | p <- lst, u /= fst p, u /= snd p ]
ux = do p <- lst
if u == fst p && u /= snd p
then return $ snd p
else if u == snd p && u /= fst p
then return $ fst p
else fail ""
実行例
(2,1) `inEqvCl` [(0,2),(3,4),(5,4),(1,5),(5,0),(6,7),(8,7)]
=> True
(1,6) `inEqvCl` [(0,2),(3,4),(5,4),(1,5),(5,0),(6,7),(8,7)]
=> False
592:デフォルトの名無しさん
05/05/22 21:57:54
>>591
こんなのでどうかな。
題意を理解していないので間違ってたらスマソ
import List
inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x, y) s
| x == y = True
| y `elem` ns = True
| otherwise = any con ns
where
ns = map snd $ filter ((==x) . fst) exts
exts = s ++ map (uncurry $ flip (,)) s
con n = inEqvCl (n, y) (s\\[(x, n), (n, x)])
593:デフォルトの名無しさん
05/05/22 22:23:13
面白そうなのでオレもやってみた。
-- 同値類のリストを算出
classify :: Eq a => (a, a) -> [[a]] -> [[a]]
classify (x, y) [] = [[x, y]]
classify (x, y) (c : cs)
| x `elem` c = (y : c) : cs
| y `elem` c = (x : c) : cs
| otherwise = c : classify (x, y) cs
inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl (x, y) lis = (not . null) (filter (f x y) (foldr classify [] lis))
where f x y c = x `elem` c && y `elem` c
いろいろ最適化の余地があるが。
594:デフォルトの名無しさん
05/05/22 22:32:57
あ、>>593 間違ってるわ。これだと [(3, 4), (1, 3), (2, 4)] とかで
うまくいかない。
595:591
05/05/22 22:42:11
>>592-594
ありがとうございます。
やっぱり短く書けるんですね。
596:デフォルトの名無しさん
05/05/23 22:10:44
無限のリストだと止まらなくなるかな
597:シミュレーション板GPスレから来ました
05/05/24 01:12:59
PolyGP: A Polymorphic Genetic Programming System in Haskell
↑のプログラムソース PolyGP.tar って、uclのサイトから消えている様ですが、
どこかにバックアップないでしょうか?
よろしく、おながいします。
598:591
05/05/24 05:44:25
とりあえず問題が2つありました。
1. 反射的閉包なんで、inEqvCl (x,x) [] == Trueにならないといけない。
>>592さんのからinEqvCl _ [] = Falseを取り除けばOK。
2. (\\)は最初の1つしか取り除かないので、最初の集合に対称なものがあると拙い。
(\\)の代わりに下の(//)を使って対処。
(//) :: Eq a => [a] -> [a] -> [a]
xs // ys = [ x | x <- xs, x `notElem` ys ]
>>596
無限リストは今回は対象外なので問題ないです。(^^;
599:デフォルトの名無しさん
05/05/27 00:42:11
Haskellの配列の更新(//)は一部変更でも配列全部作り直したり
してるんですか?
リングバッファとかに使っても大丈夫ですか?
600:デフォルトの名無しさん
05/05/27 01:42:54
600
601:599
05/05/27 22:02:30
>>599
自己レス
URLリンク(d.hatena.ne.jp)
ここみるとだめっぽい感じでした
GCが仕事してくれること期待して
配列ガシガシ使い捨てにでもするか
602:デフォルトの名無しさん
05/05/27 22:21:03
いつまでたっても関数型のボトルネックだな>配列・構造体
これが解決しない限り関数型が栄えることは無い
603:デフォルトの名無しさん
05/05/27 22:21:57
俺達でwadlerを唸らせる解を考えよう
604:デフォルトの名無しさん
05/05/28 01:00:55
配列も、マクロな視点で見ればただの変数に変わりない
だから、修正された瞬間複製するのが妥当な戦略だろう
しかし、オリジナルが参照されないとわかっているなら複製する必要ないから複製を省略する。
ここまで考えてふと思いついた。
すなわち差分をもっとけばいいんじゃないかと。
配列n番目更新しますた!更新しますた!という情報を各インデクス毎に持っとくわけよ
配列を全て更新しおわたとしても、またさらに更新するかもしれない
その場合はまたその差分を作るわけよ
するとどうだい?
差分として分解された各配列の要素はまるでりすt(ry
おれには難しすぎたようだ!
605:デフォルトの名無しさん
05/05/28 01:13:09
>>602
Uniqueness Typing
606:デフォルトの名無しさん
05/05/28 05:03:54
配列や構造体もモナドにしたら?
607:デフォルトの名無しさん
05/05/28 08:38:44
starray とかいうモナドがあると聞いたが
漏れは調べてないので諸君調べて報告してくれ
608:デフォルトの名無しさん
05/05/28 11:15:19
マクド
609:デフォルトの名無しさん
05/05/28 13:50:31
>>606
つIOUArray
610:デフォルトの名無しさん
05/05/28 14:11:18
伝説のモナド
611:デフォルトの名無しさん
05/05/28 14:23:54
ナボナ@亀屋万年堂
URLリンク(www.navona.co.jp)
これのことでしょ?
612:デフォルトの名無しさん
05/05/28 20:20:45
>>607
それはスタレイました
613:デフォルトの名無しさん
05/05/28 20:52:42
>>28で紹介されているURLリンク(rrr.jin.gr.jp)のRWikiがNot Foundで見れません。
どうしたらよかとですか?
614:613
05/05/28 20:54:47
自己解決しました。
://pub.cozmixng.org/~the-rwiki/rw-cgi.rb にありました。
615:デフォルトの名無しさん
05/05/30 20:59:12
ハスケルを勉強したい時にはどうしたらいいですか?
日本語の丁寧なチュートリアル文献がありますか?
>>1のは難しいですよ
616:デフォルトの名無しさん
05/05/30 21:15:20
>>615
1. haskellで適当なコードを書く
2. -ddump-realCをつけてコンパイル
3. 1と2の結果を見比べる
617:デフォルトの名無しさん
05/05/30 21:46:39
>>615
URLリンク(www.geocities.jp)
とか。
618:デフォルトの名無しさん
05/05/30 22:05:26
>>616
これなかなか良いね。
619:デフォルトの名無しさん
05/05/30 22:21:34
>>615
URLリンク(www.sampou.org)
とかはどう?
620:デフォルトの名無しさん
05/05/30 22:29:19
>>616
Cに落とさなくてもcore言語レベルでいいんじゃない?
621:デフォルトの名無しさん
05/05/31 09:34:43
mona do !
622:デフォルトの名無しさん
05/06/02 00:38:18
monadius
623:sage
05/06/02 14:55:24
Hugsなんだけど
Main> -1 ってやると
-1
Main> ( - 1) 2 とやると
ERROR - Unresolved overloading
*** Type : (Num a, Num (a -> b)) => b
*** Expression : fromInt (-1) 2
んん?(-) は単項演算子なのか!?
しかしMain> ( - ) 1 2 とやると
-1 とかえってくる。
(-)は二項演算子ってことになってるんじゃなかったのか!?
URLリンク(www.sampou.org)
>negate は Haskell では唯一採用された前置演算子です。
>これを (-) と書くことはできません。
>それは、こう書けば、減算関数になってしまうからです。
どうなってるの?>識者の方々
624:デフォルトの名無しさん
05/06/02 15:56:22
-1
(- 1)
(- 1) 2
の - はnegateのことで単項演算子
(-) 1 2
((-) 1) 2
(1 -) 2
1 - 2
の - は二項演算子
625:デフォルトの名無しさん
05/06/02 17:54:00
>>624
それって上の引用の記述と矛盾してないかって事。
HugsはHaskell98モードでも再現したよ。
上の記述が古いのかHugsの独自仕様なのか、、、
実際-1と書けたほうが便利だけどね。
一瞬
「(\x -> x - 1) を 自動的に -1 に変換してるのかHaskell凄えな」
と思ったけど
型が全然違うし。
626:デフォルトの名無しさん
05/06/02 19:21:51
括弧のついてない - はその直前に第1引数になるものがなければ単項演算子として解釈されるってだけなんじゃないの。
627:デフォルトの名無しさん
05/06/02 20:15:18
>>623
原文は
>negate is the function applied by Haskell's only prefix operator, minus; we can't call it (-), because ...
だから、誤訳かと。
一応報告しておいた。
628:デフォルトの名無しさん
05/06/02 23:01:09
>>625
>それって上の引用の記述と矛盾してないかって事。
どこが?
629:デフォルトの名無しさん
05/06/02 23:12:15
誤訳なのか? "minus"が抜け落ちてるけど大意は変わらない気がするが。
単にセクションと単項のマイナスが構文上区別できなくて、その場合は単項マイナスの方を優先するってだけの話じゃん。
URLリンク(www.sampou.org)
より
> - は文法上、特別扱いで、(- exp) はセクションではなく、前節で説明したように前置の符号反転演算子の適用である。
630:623
05/06/02 23:25:28
誤訳か誤読かはともかく納得しますた。
これから安心して-1って書けるよ
631:デフォルトの名無しさん
05/06/02 23:27:07
最近すげぇ低レベルの話題ばっかなのは、
やっぱ新入生??
632:デフォルトの名無しさん
05/06/02 23:31:21
ヒント:ネタ切れ
633:623
05/06/03 01:25:03
レベル低くてゴメンよ
配列の更新についてネタ振ったのも自分
学生じゃないけど
最近Haskellに挑戦してるのさ
初心に帰って楽しい。
ところでソースアップできるところないすか
634:デフォルトの名無しさん
05/06/03 01:35:40
>>629
>>623の表現だと単項マイナスが存在しないように読めるから、誤訳といっていいと思う。
635:デフォルトの名無しさん
05/06/04 14:08:09
33 名前: 名無しさん@毎日が日曜日 Mail: 投稿日: 05/06/03 21:46:40 ID: M3Iswrux
type Dame = Human
jobHunting :: Dame -> [Company] -> Maybe Future
jobHunting _ [] = Nothing
jobHunting d (c:cs)
| hasShokureki d = Just Saiyou
| (age d) < 25 = Just Saiyou
| otherwise = jobHunting d cs
636:デフォルトの名無しさん
05/06/04 18:42:44
>>602
そんな貴方に APLやJやKはいかが?
関数型言語スレで話題になってたと思うが、過去ログ倉庫入りかも。
637:デフォルトの名無しさん
05/06/04 21:35:16
APLやJやKは、関数型言語の源流というだけで、今更な言語。
APL挙げるくらいなら、KRCやFを挙げるよな、まともな人間なら。
638:デフォルトの名無しさん
05/06/04 21:56:08
Lisp -> ML -> Haskell ってながれじゃないの?
639:デフォルトの名無しさん
05/06/04 22:13:17
?
現在の関数型言語ブームの源流は、
Fortran、BNF、1977年チューリング賞受賞者John BackusのFL(F言語)
で す が 何 か ?
640:デフォルトの名無しさん
05/06/05 03:19:55
い い え 何 も ?
641:デフォルトの名無しさん
05/06/05 04:13:34
C++ → くそ
C → くそ
Java → くそ
Fortran → くそ
ML → ゴミ
Haskell → ゴミ
Ocaml → クズ
Ruby → クズ
Lisp → クズ
Forth → クズ
λ-Cal → アホ
π-Cal → アホ
μ-Cal → アホ
φ-Cal → アホ
642:デフォルトの名無しさん
05/06/05 04:14:31
コピペうざ
643:デフォルトの名無しさん
05/06/05 04:24:33
>>637
関数型言語の源流というよりは、配列計算言語の源流でわ?
SとかRとか(SASとかSPSSとか)、影響うけてるでそ?
644:デフォルトの名無しさん
05/06/05 09:50:00
>>現在の関数型言語ブーム
え、今、ブ、ブームなんですか...... よい時代に生まれたことを感謝します。
645:デフォルトの名無しさん
05/06/05 10:06:10
空前のブームのため、Haskellプログラマは企業から引っ張りだこです。
646:デフォルトの名無しさん
05/06/05 10:17:20
>>645
/ ̄ ̄ ̄ ̄ ̄ ミ
/ ,――-ミ
/ / / \ |
| / ,(・) (・) |
(6 つ |
| ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| /__/ / < なわけねーだろ!!
/| /\ \__________
647:623
05/06/05 16:30:18
とりあえずLha展開関数動いたよ。
URLリンク(www3.atwiki.jp)
だれかモナドを2つ以上同時に使う方法教えて下さい。
648:デフォルトの名無しさん
05/06/05 16:56:31
>>647
モナド変換子で合ってる。
649:623
05/06/06 01:12:37
URLリンク(www.sampou.org)
やっぱりこの辺りは避けて通れませんか。
モナドをやっつけたと思ったらまた難物が、、、
650:デフォルトの名無しさん
05/06/06 23:25:48
ええっと、haskellよりmathematicaの方が有能だしいいのでは関数型として?
651:デフォルトの名無しさん
05/06/06 23:33:24
放置。
652:デフォルトの名無しさん
05/06/07 05:06:03
Haskellで数式処理システム作ろう!とかいう噺があったやうな…?
653:デフォルトの名無しさん
05/06/07 05:44:29
>>649
こんどはCIAか?
654:デフォルトの名無しさん
05/06/07 22:43:11
いや、FBIです
655:デフォルトの名無しさん
05/06/10 17:09:38
649>>URLリンク(haskell.org)に簡単なつかいかたとかあるよ。がんばれ!
656:デフォルトの名無しさん
05/06/29 17:18:46
WinXPにHugsを導入したんですけど、読み込みまでは行くみたいなんですけど
実行してみると結果が表示されません。
例えば
myfactorial :: Int -> Int
myfactorial n
| n == 0 = 1
| otherwise = n * myfactorial (n-1)
というファイルを読み込んで
myfactorial 5
と入力しても何も結果が表示されずに
Main>
という状態に戻ってしまいます。何か原因があるのでしょうか。
657:¬656
05/06/29 22:55:14
XPでやってみたところ、GUIのやつ(WinHugs)が駄目なようです。
オプションあたりが怪しいけどサパーリ
658:デフォルトの名無しさん
05/07/04 22:20:14
ghcでControl.Monad.Readerをインポートすると
Monad ((->) r)のインスタンス宣言(中味はReaderと同じ)が
付いてくるっぽいんだが、いったいこれは何なんだ?
かなり便利だから積極的に使いたい気もするけど、
ドキュメントされてないみたいだし。
import Control.Monad.Reader
-- 3で割れて、かつ5で割れない自然数
t = filter (liftM2 (&&) ((==0) . (`mod`3)) ((/=0) . (`mod`5))) [0..]
659:デフォルトの名無しさん
05/07/04 23:50:56
Vital 使ってる人居ます?
URLリンク(www.cs.kent.ac.uk)
660:デフォルトの名無しさん
05/07/10 19:53:36
I/Oをマクロは解決しないか
661:デフォルトの名無しさん
05/07/11 23:39:29
FpLの抽象構文を拡張して、利用者定義関数が算術式と論理式とを混在してとることができるようにするにはどうすればよろしいですか?評価意味論を適当に拡張するらしいのですが・・・
662:デフォルトの名無しさん
05/07/11 23:40:00
名前呼びを用いると、ある式eに対してD,ρ├ e ⇒ A kとなる数字kが存在するけれども、値呼びを用いると、D,ρ├ e ⇒ A kとなる数字が存在しない宣言の例ってありますか?
663:デフォルトの名無しさん
05/07/12 07:34:27
まず元ねたを書け。話はそれから。
664:デフォルトの名無しさん
05/07/19 18:29:38
圏論の基礎 日本語訳 S.マックレーン
URLリンク(www.amazon.co.jp)
665:デフォルトの名無しさん
05/07/19 20:19:44
"Catefories for Working Mathematician" (働く数学屋のための圏論) の題名が
「圏論の基礎」になっちまうんだとしたら、
"Categories, Types, and Structures: An Introduction to Category Theory for the Working Computer Scientist (Foundations of Computing Series)"
の題名はどーなるんだ?
「一週間で判る!くもんしきけんろん (いちねんせいむけ)」か(笑
666:デフォルトの名無しさん
05/07/19 20:31:23
>>664
買っちゃった。
667:デフォルトの名無しさん
05/07/19 20:43:25
>>666
でどうよ?
>>665
"Basic Category Theory for Computer Scientists (Foundations of Computing)"
「圏論の超基礎」つうのもある・・・
668:デフォルトの名無しさん
05/07/19 20:47:40
"Categorical Logic and Type Theory (Studies in Logic and the Foundations of Mathematics)"
「論理&数学ラブ♥な人のための、カテゴリー・ロジックと型理論」
なんつう分厚い数学書も買うには買ったけど、これは完全に死蔵本だな、たぶん。
669:デフォルトの名無しさん
05/07/19 20:49:10
ってな意味で、いきなり訳書を読めるアンタ(>>666)、
幸せ者だぞゴラァ!!!
670:デフォルトの名無しさん
05/07/19 21:17:36
>>667
誤植が多いみたい。
671:デフォルトの名無しさん
05/07/19 22:24:11
誤訳じゃなくて誤植ってのが泣けるね。
672:デフォルトの名無しさん
05/07/19 23:39:47
「できる圏論」
673:デフォルトの名無しさん
05/07/19 23:40:57
モノイダル圏とか分からない件
674:デフォルトの名無しさん
05/07/21 16:22:11
URLリンク(www.sampou.org)
暇だからこれ読んでたんだが、ユーザ定義型のデータ構築子と型構築子の意味が分らん。
誰かなんかC,C++の似たような概念の用語で分りやすい説明キボンヌ。
675:デフォルトの名無しさん
05/07/21 18:51:43
データ構築子 <=> classのコンストラクタ
型構築子 <=> template
676:デフォルトの名無しさん
05/07/21 21:21:07
型構築子はtypedefでは?
677:デフォルトの名無しさん
05/07/21 21:34:50
typedef は多相(総称?)型の定義ができんでしょ。
678:デフォルトの名無しさん
05/07/21 23:42:00
CやC++でプリミティブと言われてる型は、Haskellでは全て列挙型
という見方をするの?
data Int = -65332 | ... | -1 | 0 | 1 | ... | 65332
という例が載ってるけど、こんな感じに、
新たに型を作る。作られる型がデータ構築子
そのときに型のデータのインスタンスを列挙する。列挙されるのがデータ構築子。
こんな感じでいいのかな?頭悪くてすいませんねw
679:デフォルトの名無しさん
05/07/21 23:43:28
×新たに型を作る。作られる型がデータ構築子
○新たに型を作る。作られる型が型構築子
680:デフォルトの名無しさん
05/07/21 23:52:20
しかし新たに型を定義する式のためのキーワードがdataで、
Cのtypedef風なものにtypeが使われてるのはなんかちょっと違和感あるというか。
typeはいいとして、なんでdataなの?
681:デフォルトの名無しさん
05/07/22 00:54:47
>>680
データ型宣言だから、では駄目かい?
682:デフォルトの名無しさん
05/07/22 08:43:46
>>681
厨房臭いんですが、dataってのは納得できないですね。
それはまあいいとして、このスレはちょっとレベルが違いすぎるので、
初心者はこっちで質問することにしました。どうもです。
関数型言語Part IV
スレリンク(tech板)
683:デフォルトの名無しさん
05/07/22 08:52:28
言語に特有の質問なんだから、このスレのほうがいいんじゃないか?
684:デフォルトの名無しさん
05/07/22 13:15:03
SMLはtype synonym宣言に'type'、データ型宣言に'datatype'を使う。
Haskellはそいつを参考にしたが、'datatype'は長いので'data'にした。
というのも考えられるかも。
685:デフォルトの名無しさん
05/07/22 13:45:51
OCamlなら全部typeで済ませられるぞ(逆に言うと宣言の見掛け上区別できない)。
686:デフォルトの名無しさん
05/07/27 20:28:46
Peyton Jonesの本が面白すぎて夜も眠れません。
687:デフォルトの名無しさん
05/07/28 01:59:51
HaskellからCleanに宗派変えてみる。
688:デフォルトの名無しさん
05/08/13 00:17:46
ここでは、こういうネタはスレ違い?
URLリンク(www.geocities.jp)
本家からもリンクされてる。
Monadius
A shoot 'em up game using OpenGL. Takayuki Muranushi also wrote a couple of other games in Haskell.
URLリンク(www.haskell.org)
689:デフォルトの名無しさん
05/08/26 17:04:35
_|_って何から来てるんですか?
数学?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5387日前に更新/259 KB
担当:undef