[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 06/18 14:14 / Filesize : 205 KB / Number-of Response : 798
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2012/03/16(金) 21:54:23.92 ]
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/

411 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 14:14:28.87 ]
>>405
Learnは内容はいいけど、訳がどうかが問題。これだけは見てみないとわからない。
山本さんみたいに訳せてるかどうか

412 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 14:57:09.79 ]
Data.Vector.Primitiveはとても特殊な場合を除いて推奨されないとありますが
とても特殊な場合とはどんな場合なんでしょうか?

413 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 18:04:21.99 ]
配列ライブラリを書くときとか?

414 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 18:10:07.54 ]
将来、Vector の実装がPrimitiveのレベルで変更されるということだったら困る

415 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 18:26:23.52 ]
>>406
その筋の人だ!

416 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 18:53:57.14 ]
考えてみれば98糞食らえからwindows糞食らえで
 裏街道ばかり来てるな。

417 名前:デフォルトの名無しさん [2012/05/25(金) 19:32:56.19 ]
>>405
>>411
元々のお二人の訳も素晴らしいのですが、さらにかなりレビューされていて
とてもわかりやすくて良いと思います。
ただ、原文のブロークンな調子を踏襲して訳されているので、
そういうのが嫌いな方には不向きかも知れません。
内容的には、すごいH本の方が、関数型言語の初心者には
分かりやすいと思います。

418 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 19:41:28.34 ]
cabalを利用していて、依存性が原因でパッケージのインストールに失敗する場合、通常どのように対処すればいいのでしょうか?
大まかで良いので教えていただけるとありがたいです

419 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 19:50:41.63 ]
普通の人は諦めて、バージョンアップするまで待つ。

普通でない人は、*.cabal ファイルをテキストエディタで修正する。

私は普通でない人なんで、どんどん書き換える。
もちろん異常が無いかどうかはできるだけ検証するが。



420 名前:デフォルトの名無しさん [2012/05/25(金) 22:05:05.22 ]
すごいHaskell買おうかな……
フリー版+3000円の価値があるかが問題…

421 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 22:22:11.53 ]
>>420
もし主目的が、Haskell の関する他人の文章を楽しむことではなく、
あくまで Haskell を学ぶことであるまなら、
フリー版でよく分らない部分をここで訊いて、
それでも納得できなければ買う、というのはどうだろうか

422 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 23:00:34.35 ]
>>417
オーム社でやってるレビュー方式には参加したことがあるからだいたい雰囲気分かるわ。藁
訳は期待してるわ。by 411

423 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 23:02:51.97 ]
>>420
英語の洋書に一度は手を出したい→原著サイトでしばらく格闘してみる。
オンラインで読むのは嫌目がしょぼしょぼするし、頭に入るきがしない。英語は好き→原著でどうぞ
英語は苦手。→強烈なH本をどうぞ。

424 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 18:43:17.15 ]
紙のよりpdf版が少しやすい
estore.ohmsha.co.jp/titles/978427406885P

425 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:19:42.13 ]
しかもカラーらしいな、pdf版

426 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:21:27.87 ]
加筆とかはないのか、結局。

427 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:46:47.63 ]
「すごいHaskellたのしく学ぼう!」は気配りと楽しさがすごい
ttp://d.hatena.ne.jp/keigoi/20120526/sugoih

428 名前:デフォルトの名無しさん [2012/05/27(日) 15:53:38.46 ]
Linuxで*.cabalってどこにあるんでしょう。
探せど探せど見つからなくて困ってます。

429 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 16:04:40.54 ]
>>428
意味が分らん。
cabal ファイルは Linux も Windows も関係ないだろ。

自分でパッケージを作りたいのなら cabal ファイルも自分で書くし、
Hackage から落としてきたパッケージなら展開したディレクトリ内に入ってる。



430 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 18:58:41.69 ]
>>428
ディストリのパッケージになってる奴の*.cabalファイルならソースパッケージを展開すると入ってると思います。

431 名前:418 mailto:sage [2012/05/27(日) 20:08:53.91 ]
>>419
ありがとうございます
しかしなかなか上手いこと通すのは難しいですね・・・

432 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 02:19:34.53 ]
.ghciを設定したら警告が出たんだが
*** WARNING: /home/hi/Haskell is writable by someone else, IGNORING!
*** WARNING: /home/hi/Haskell/.ghci is writable by someone else, IGNORING!

.ghci
:set prompt "ghci> "
設定も反映されないし、よくわからん。

433 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 02:57:35.46 ]
英語読めないのか?

434 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 07:48:02.06 ]
すごいHaskellのやつか。
ワーニングの英語には、これと似た内容が書いてある。
www.google.co.jp/search?hl=ja&q=.ssh+%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3
それでも分からなかったら、ワーニングの一部コピペしてググってみよう。

435 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 11:53:23.62 ]
ワーニングワーニングワーニングワーニング

436 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 20:58:20.92 ]
>>435
ボスキャラでも登場するのか

437 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:11:31.73 ]
ウォーニングって言いたいんだろ

438 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:18:48.90 ]
ワーニングのバッグスバニー

439 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:20:36.83 ]
>>435,436
へいおまち
www.youtube.com/watch?v=lySjinT6f0A#t=1m55s



440 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:22:04.36 ]
某書籍に「だったら、おまえはStar Warsをスターワーズと読むのか」とあって、
そりゃもっともだと思うと同時に、そういう話じゃねぇだろと思ったな。

441 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:33:48.96 ]
『宇宙戦艦ヤマト』が、「ワープ」を「ウォープ」に修正する最後の機会だったんじゃないか、
とか今では言われているが

442 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:42:05.41 ]
「ワープ」は1億人が意味を共有できる立派な日本語
修正の必要はない

443 名前:ぬるぽ mailto:sage [2012/05/28(月) 22:03:46.93 ]
バレーボールもボレーボールらしいな
nativeの発音聞いたことないけど


444 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 22:16:32.09 ]
「グッドマーニング云々」とか言ってたヘミ猫を思い出す。

445 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 22:28:44.29 ]
ラウターの調子が悪い

446 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 22:44:59.51 ]
むかし、猫でもわかるプログラミングで、
エディットコントロールをエジットコントロールと言っていて、
もの凄く違和感を覚えた記憶がある。

でもよく考えてみれば、エジソンと同じなんだよな。

447 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 22:46:22.72 ]
>>443
アメリカ人は普通にバーリボーだったけどなぁ。

448 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 23:34:37.10 ]
♪こわれかけのレディオ

449 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 23:38:13.93 ]
gtk2hs や wx などの GUI ライブラリのラッパーを作りたい。
下記のことがラッパーでは実現不可能なら一から作ることになる。

例えば、ボタンを押すとラベルの文字が変わる処理を記述したい場合、
素の gtk2hs や wx なら、ボタンのイベントハンドラに登録した関数内で、
ラベルのプロパティに対して set 関数を使って値を書き換える感じだと思う。

これはあまりに手続き的でムカムカしてくる。

こうではなく、ボタンのイベントに反応するプロパティ型を作り、
それをラベルのプロパティに最初に設定した後は変更(再設定)しない。
イベントが起きなくても、起きても、自動的に文字が設定される。

プログラマはイベント時に何が起きるかを時系列にそって設定するのではなく、
プロパティが何に対してどう反応し、どう変化するかを定義する。

これができれば、いくぶん宣言的で心地よい。

私みたいな者が考える事なんて既にいろんな人が考えていると思うんだが、
このような仕組みを作る上で、参考になりそうな資料はないだろうか。



450 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 23:48:03.50 ]
wxPython と decorator

451 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 08:41:21.13 ]
まさにそれがFRP


452 名前:432 mailto:sage [2012/05/29(火) 09:40:44.70 ]
chmod 700 .ghci
chmod 700 Haskell/
で解決した。
Haskell/もパーミッションいじらないといけなかった。
なんで設定ファイルがない時は普通に動くのに、
設定ファイルを置くと警告が出るのか意味がわからない。


453 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 09:44:25.92 ]
俺は「***** is writable by someone else, IGNORING!」という警告を読むことが
できない文盲です、って大声で自分で言いふらして嬉しいのか?

454 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 10:09:31.31 ]
>>453
初心者でごめんね。

455 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 10:15:28.14 ]
いや初心者とかじゃなくて、英語読めればその警告が何故出たのかわかるだろってことだろ

456 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 10:48:28.72 ]
日本語でお説教する事に何のメリットがあるか、わかるだろ

457 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 11:32:31.62 ]
なでしこで記述する事に何のメリットがあるか、わかるだろ

458 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 12:02:42.50 ]
英語の初心者ということだろう。

459 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 12:48:14.86 ]
というか Unix は一つのマシンを複数のユーザーが使うことが前提だから、
初期化スクリプトみたいなファイルを誰でも編集可能だと、たとえば自分の
ファイルを全部消す、みたいな悪意ある記述を追加されるかもしれない、

という前提を知らないと、英語が読めてもわからないかもしれない。

ていうか >>434 を華麗にスルーしちゃダメだろ。



460 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 12:52:44.84 ]
>>450
まだ調べ始めたばかりだけど、求めているモノとは何となく違う感じがする。
decorator の機能を使ってイベント処理している例をいくつか見てみたけど、
結局イベントハンドラの中で描画関数を呼んだり、計算したりしている。

つまり、>>449 の「素の gtk2hs や wx なら」の部分と
本質的に何も変わらないのではないだろうか。

もちろん、自分でももう少し詳しく調べてはみるが。

>>451
言葉が足りず申し訳ない。
これが FRP の一つの形態になっている事は分ってた。
(リアクティブシステムの構築を関数型っぽく記述する事)

Haskell で使えるFRPライブラリにも色々あって、
たとえば Yampa の仕組みや実装をいくら調べたところで
>>499 のような事の実現に直接役立つわけではない(実際色々調べた)。

>>499 に繋がるような何かキーワードはないだろうか。

461 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 15:16:16.96 ]
バグ?
Prelude> succ 1.000022342
2.0000223420000003


462 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 15:27:06.59 ]
xamlのデータ・バインディングとか?

463 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 15:36:37.09 ]
XAMLファミリは、Bindingに加えてViewModelのプロパティ間で
リアクティブプログラミングする仕組みを導入すると
正に>>449のような書き方になるね。

しかし、あれをHaskellでどうやったら再現できるのかはさっぱりわからん。

やってる事は、依存関係のあるキャッシュの管理と似てるので
キャッシュを持つサーバの仕組みなんかが参考になりそうだが・・・

464 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 16:02:10.76 ]
>>460
色々調べてたのなら既知かもしれんが
プロパティを設定するというのはwxパッケージの提供するインタフェースに似てるな
このプロパティは実質IO aとa -> IO ()のペアにすぎんのだけど、それなりに>>449で述べてるようなのに近いように思う
これとFRPの組み合わせはreactive-banana-wxパッケージでプロパティやイベントをEventやBehaviorとして
リアクティブシステム内で扱えるような補助関数を提供してる
参考になる記事としてはreactive-bananaの作者のblogとか


465 名前:449, 460 mailto:sage [2012/05/29(火) 19:46:57.92 ]
みんな、ありがとう。
知ってるものも、知らなかったものも、色々キーワードが出てきた。
それぞれの関連も含めて調べてみる。

本棚の肥やしになってる "Pro WPF in C# 2008" もやっと役立つ日が来たかも。

アドバイスを受けて、Heinrich Apfelmus のブログをちょっと見てみたけど、かなり面白い。
まとまった時間が取れる休日にでも本格的に読んでみるよ。
(Conal Elliott のブログより読みやすい英語だ)

wx のプロパティは gtk2hs のそれや OpenGL の StateVar と似たようなモノで、
やはり「値」を設定したり取得したりするものという以上のモノではないのでは。
その値はあくまでそのプロパティの意味する値そのもので、
例えば text プロパティなら String 型しか受け付けない。
そこに「ユーザーが何かした時にはある文字になる」という IO String の値を
設定することはできない。

一応繰り返しておくと、次のような考え方が wx や gtk2hs などのものと思う。

ボタンが押されたイベントでは何を処理するのか?
 ・初めにラベルの文字を変え
 ・次にテキストボックスの背景色を変え
 ・最後にボタンを不活性にする

このような手続き的なものを、次のように宣言的にしたい。

ラベルの text プロパティとは何か?
 ・ボタンプッシュイベントで文字を変えるものだ
テキストボックスの bgclolor プロパティとは何か?
 ・ボタンプッシュイベントで色を変えるものだ
ボタンの enable プロパティとは何か?
 ・ボタンプッシュイベントで False になるものだ

466 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 22:36:50.20 ]
>>465
w :: Frame
b :: Button
t :: TextBox
l :: Label
pushEvent :: Button -> Event ()
text :: Prop w String
bgcolor :: Prop w Color
enable :: Prop w Bool

w <- frame [text := const "hoge", show := const () <$> createEvent w]
t <- textbox [bgcolor := changeColor <$> pushEvent b]
l <- label w [text := changeString <$> pushEvent b]
b <- button w [enable := const False <$> pushEvent b]

こういうのが思い浮かんだ

wxのプロパティやイベントの型をEventなりBahaviorの形式にしただけだが
>>465の最後の記述のような捉え方は自然に出来る書き方にはなってると思う
今のreactive-bananaでDoRecが使えるなら
頑張ってwx-coreパッケージ直接叩いてこういうインターフェースの高水準ライブラリ書くのは可能な筈


467 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 22:42:05.22 ]
部品単位でイベントハンドラを書きたいってこと?

468 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 23:08:01.19 ]
*Main> [1,3..6]
[1,3,5]
*Main> ['1','3'..'6']
"135"
*Main> [1.0,3.0..6.0]
[1.0,3.0,5.0,7.0]

なんでFloatのリストでやったときだけこうなるの?

469 名前:449, 460 mailto:sage [2012/05/29(火) 23:21:17.86 ]
>>466
text :: Prop w String

これらは Prop ではなく Attr なのでは?

それはともかく、具体的なアイデアありがとう。
イメージとしてはかなり近いと思う。
参考にして考えてみる。



470 名前:449, 460 mailto:sage [2012/05/29(火) 23:22:12.75 ]
>>467
それも一部に含まれているが、ちょっと違う。
手続き型と宣言型の違いが明確に現れるようにイベントハンドラを例にしたが、
あるプロパティの値が依存する先(ソース)はイベントハンドラだけではなく、
別のウィジェットのプロパティという可能性もある。

例えば、何か絵をプレビューするウィジェットの enable プロパティが、
複数のチェックボックスのプロパティに依存していたり。

この場合、手続き型なら、両方のチェックボックスの check プロパティを調べ、
両方 True ならプレビューウィジェットの enable プロパティを True にする、
という処理を両方のチェックボックスのイベントハンドラに記述する。
(当然実際は、同じひとつのイベントハンドラを両方に設定するなど省力化するが)

これを、例えば次のように記述できたら宣言的で分りやすいと思う。
(擬似的に wx っぽく書くと)

p <- image w [ enable := checked c1 <&> checked c2 ]

本質的には、イベントの発生やプロパティの変化を「伝搬」させたい。
それができれば部品単位でイベントハンドラを書くこともできる、という事。

471 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 23:42:10.94 ]
手続き型ならobserverパターンでやるんじゃないかな。

きっと難しくなる要因は純粋言語だというところにありそう。

472 名前:449, 460 mailto:sage [2012/05/29(火) 23:52:06.14 ]
>>471
すまん例が悪かったか。

べつに手続きっぽく書くのが難しい訳ではない。
observerパターンの様に書くこともできる。

私が単に関数型言語で手続きっぽく書くのをキモイと感じるから、
なんとか宣言的に書けないかと、そっちの方で苦心してるだけだ。

私がもし純粋でない OCaml にはまっていても、
きっと同じように宣言的に書けないか考えていたと思う。

473 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 00:10:30.62 ]
>>446
editはエディットです

474 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 04:38:33.68 ]
Stateモナドで24時間経っても答え出ない処理をMutable Vectorに替えたら20分で答え出したワロタwww

475 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 05:55:52.99 ]
(24 * 60) / 20 = 72
72倍の高速化ならよく聞く話。

476 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 05:57:49.10 ]
さっそくGTAでDPの練習 #Haskell - Qiita
qiita.com/items/a372458d171e373285b1
これとか当社比400倍とか

477 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 07:00:18.28 ]
(/ 20 (* 24 60))

478 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 13:39:02.03 ]
(/ (* 24 60) 20)でしょ

479 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 14:15:16.61 ]
くそう、みんな雲の上に居るようだ
DPが動的計画法のことだと知るまで5分も費やしてしまった
GTAに至ってはグランドセフトオート (ry



480 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 14:28:51.43 ]
すごいHaskell
たのしく学ぼう! ||
     人 _  |-|
     旦/○\日
     目 ァイリ |-|
  / ̄ ̄ ̄ ̄ ̄\  
  □-□ U      |
  | .|ι        |
旦ノノ||  ̄ ̄ ||



AAなんてあったのね

481 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 15:27:23.39 ]
>>480
さっき本屋で見てきたんだけど、B5大型本を想像していたので文庫本+αのサイズが意外だった。電車の中でも読めるね。
中身も読みやすく編集されているようで、これからHaskellやって見ようという人にはお勧めだと思う。

ステマでした

482 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 16:13:11.04 ]
これなら手続き脳の私でもらくらく最後まで読んでしまえそう!
でも...お高いんでしょう?

483 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 16:19:47.25 ]
Amazonで出店者が定価3、4割り増しにしてるけど、情弱は買うんだろうかあれ。

484 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 17:21:21.37 ]
少し高くしている奴は海外へ送ってもらえるってことでしょ?

あと今すごいH本第一章読み終わったけど
結構誤植があった。

485 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 17:51:41.91 ]
やっぱりか

486 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 18:14:21.05 ]
重力は存在しない といってる学者がいるみたいだな

やめとけよ
そこの場所のリファクタリング始めたら「引力」だって存在しねーし
熱エネルギーも存在しねーから

その部分は俺が研究してきた事と酷似する
俺はアルゴリズムの中から、変数を抹消し、
ソースコードは再帰で圧縮
そして残ったものは、何もなかった

1が残ると思ってたが、予想を超えて、「それ」は0になった

重力がいらないとかいっちゃうと、0に近づくんだよ
わかるか

いらなくないんだよ

元々、何もないところに「重力」ってものを「わざわざ」冗長させて定義したんだよ

何もわかってねーな科学者
リファクタリングし続けた後に、宇宙に存在する最後の1とは、時空のねじれによって出来る固体のみで
その時空のねじれを解けば1であった存在は0になり、文字通りなにもなくなる 世界の終わり

487 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 18:16:30.43 ]
コテが抜けてるよ

488 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 18:35:37.43 ]
躁病患った友人が似たような事言ってた

489 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 19:26:23.54 ]
ニュートラリーノがダークマターの正体なのか?



490 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:12:32.98 ]
beautiful codeであったな。
コードがなくなる話。

491 名前:449, 460 mailto:sage [2012/05/30(水) 20:38:17.19 ]
>>468
Float と Double の Enum インスタンスにおいて
enumFromThenTo 関数は次のように定義されている。

enumFromThenTo = numericEnumFromThenTo

numericEnumFromThenTo n n' m = takeWhile p (numericEnumFromThen n n')
  where
    p | n' >= n = (<= m + (n'-n)/2)   -- <-- 注目
      | otherwise = (>= m + (n'-n)/2)

numericEnumFromThen n m = iterate (+(m-n)) n

例えば [1.0,3.0..6.0] とやったら、6.0 以下の間は差分ずつ増やすのではなく、
「6.0 + 差分の半分」以下の間は差分ずつ増やす計算になってる。

つまり、7.0 以下の間は差分ずつ増やすので、最後は 6.0 ではなく 7.0 で終わる。

こういう仕様になっている理由は、本当のところは正直よく分らない。
一応理由として思いつくのは、浮動小数点による誤差の蓄積の問題を回避するため
ではないかという事。

492 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:57:45.88 ]
>>490
最後は唯の数式になるって話でしたよね
バグ0で何よりも高速に動作し使用メモリも0

493 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 21:28:17.18 ]
欧州ではコンピューターにプログラミングさせるのが今研究されてるとか
そんな話題があったな。

494 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 01:03:20.68 ]
(==) 1 1
1 == 1
上と下が同じなのは面白いなぁ。


495 名前:337 mailto:sage [2012/05/31(木) 02:37:13.13 ]
(1 ==) 1
(== 1) 1

全部同じ (^^)

496 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 07:43:22.77 ]
すごいH、全部読んだ。
誤植が多少あったけど、日本語訳に違和感はなかった。

PerlとJavaScriptで自サイトを作ってる趣味プログラマーだけど、プログラミングの幅を広げようと
思い、プログラミングHaskell -> Real World Haskellの半分までを読んでから、すごいHを読んだ。

後半は全くの初心者には、やっぱりちょっと難しいかなと思った。
これから、Real World Haskellの残り半分を読みます。

497 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 08:34:14.43 ]
違和感ないけど、
直訳のままじゃねーの?って所が所々あったよ。

498 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 09:23:22.24 ]
蛇足な上に正しいとは言い難い訳注が多くて萎えた

499 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 11:03:03.47 ]
誤訳誤植は具体的に書いてくれるとたすかるにゃん



500 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 11:11:02.75 ]
...とか言って具体的に自分も書かないとアレなので一つ見つけたやつ:


p.385 誤:VirePatterns  正:ViewPatterns

501 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:12:22.41 ]
p19の下側
両方を含むリストは作れません。

ここはタプルだろ?

502 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:13:09.98 ]
p20
最下段
ジッパーみたいに一つのリストにします。

ここはタプルだろ?

503 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:15:22.87 ]
p22
bが斜辺より長いような不要なトリプルを調べないような

ここはaだろ?

504 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:21:40.86 ]
ここに書いてもフィードバックされる保証はないけどな

505 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:26:11.65 ]
>>501
"…ペアとトリプル両方を含むリストは作れません。このため、
ベクトルを表すにはタプルを使ったほうがはるかに有利です。"

何もおかしいことは言ってないと思うよ。

p.19上の方では図形を表すのに頂点のリストとして図形を表す試みとして
[[Int]] なんかを考えようとしてる。つまりベクトルをリストとして与えようとしてる。
この方式について検討するとベクトルの表現に使われてるリストは長さ
固定ではないので2次元と3次元のベクトル(頂点データ)が混在したリストが
出来てしまうという難点があることが指摘されている。

一方、頂点の表現としてリストの代わりにタプルを使うならば標準のリストは
homogeneousでなければならないという縛りのおかげで2次元と3次元の
頂点データが混在したリストは作れない事になり、コンパイラがはねてくれる。
[(Int,Int)] か [(Int,Int,Int)]のどっちかになるはずだからな。

そんなわけで
"…ペアとトリプル両方を含むリストは作れません。このため、
ベクトルを表すにはタプルを使ったほうがはるかに有利です。"
という事になる。

506 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:30:42.06 ]
>>502
タプルのリストにしてくれるという意味で「一つのリストにしてくれます」と言ってると思うんだけど。

んーあれだな、本気でわからないのか些細な説明省略を鬼首で騒いでるのかわからん。
前者なら真面目に相手するけど後者ならあんま相手にしたくないなぁ。

後者ならSICPの日本語訳がクソすぎる和田は日本語がわかってない
とか該当スレで騒いでるほうが賛同者多くて楽しいと思うよ。

507 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:36:10.34 ]
> 後者ならSICPの日本語訳がクソすぎる和田は日本語がわかってない
> とか該当スレで騒いでるほうが賛同者多くて楽しいと思うよ。
YA・ME・TE
SICPスレが機能停止しっぱなしでげんなりしてるんだから

508 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:46:06.63 ]
諸君、ホットなライブラリは何かね?

509 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:55:15.84 ]
> 正しいとは言い難い訳注
むしろこっちの詳細はよ



510 名前:502 mailto:sage [2012/05/31(木) 12:59:07.14 ]
>>506
p21の
zipの使用例で作成されているのはタプルだから
一つのタプルにしますという意味のほうが
日本語として自然なのではないですか?

:t zip
zip :: [a] -> [b] -> [(a, b)]
と:tで見ると2つのリストを受け取って、返り値がタプルになってます。

表現方法で、
(a, b)はタプルで
[(a, b)]もタプルですよね。



511 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:01:16.68 ]
>>510
いやいや、(a, b)はタプルで[(a, b)]は 「タプルのリスト」だよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<205KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef