[過去ログ]
関数型プログラミング言語Haskell Part16 (978レス)
関数型プログラミング言語Haskell Part16 http://echo.5ch.net/test/read.cgi/tech/1317958045/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
448: デフォルトの名無しさん [sage] 2011/11/10(木) 20:31:23.29 >>447 こうすりゃいいじゃん (^(2::Int)) http://echo.5ch.net/test/read.cgi/tech/1317958045/448
449: デフォルトの名無しさん [sage] 2011/11/10(木) 21:08:18.64 >>448 それ>>442の話と関係なくね? http://echo.5ch.net/test/read.cgi/tech/1317958045/449
450: デフォルトの名無しさん [sage] 2011/11/10(木) 21:24:40.76 >>449 自作の関数作るときとかは、型推論に任せるより自分で決めた方が速かったり、逆に遅い代わりに大きな数を扱えたりする length関数と同じ機能の関数mylength作るとき、 mylength [] = 0 mylength (_:ns) = 1 + mylength ns の型は[a]->aだが、 mylength::[a]->Int mylength [] = 0 mylength (_:ns) = 1 + mylength ns とすれば、当然ながら型は[a]->Intになる http://echo.5ch.net/test/read.cgi/tech/1317958045/450
451: デフォルトの名無しさん [sage] 2011/11/10(木) 21:26:17.73 訂正 x [a]->a o [t]->a http://echo.5ch.net/test/read.cgi/tech/1317958045/451
452: デフォルトの名無しさん [sage] 2011/11/10(木) 22:01:08.03 >>450 だからそれは(a^2)のケースでは関係ないよね http://echo.5ch.net/test/read.cgi/tech/1317958045/452
453: デフォルトの名無しさん [sage] 2011/11/10(木) 22:06:04.65 >>452 自分で作る関数なら自分で型を決めればいいし、すでにある関数なら、引数に渡す値の方の型を決める他あるまい http://echo.5ch.net/test/read.cgi/tech/1317958045/453
454: デフォルトの名無しさん [sage] 2011/11/10(木) 22:16:47.46 >>453 大抵の場合は、自分で作る関数の型さえ決めれば型推論で自動的に全ての型が決まるんだよ それだけで決まらないこともときどきあって、(^)はそれを発生させる例の筆頭 http://echo.5ch.net/test/read.cgi/tech/1317958045/454
455: デフォルトの名無しさん [sage] 2011/11/10(木) 22:33:42.23 >>454 そういう話だっけ? 速い型を使いたいけど、型を明示した方が良いのか?って話だった気が・・・ 単なる数字(例えば5とか)は、通常Num a。定数として宣言すると、Integralにデフォルトでなるから、数字をInt型にしたいなら、5::Intって具合に宣言しないとダメ >>441への回答としては(^(2::Int))と書け。が、妥当だと思うんだが・・・ *Main> :t 5 5 :: Num a => a *Main> let a = 5 *Main> :t a a :: Integer *Main> :t 5::Int 5::Int :: Int http://echo.5ch.net/test/read.cgi/tech/1317958045/455
456: デフォルトの名無しさん [sage] 2011/11/10(木) 22:48:37.04 >>441は何も質問してないのに回答とかよくわからん 俺は>>442に対する>>443の回答に反論してるだけだよ http://echo.5ch.net/test/read.cgi/tech/1317958045/456
457: デフォルトの名無しさん [sage] 2011/11/10(木) 23:17:35.61 >>456 ん、んんん? だったら、>>450の通り、先に型を書けば防げてるだろ? (^(2::Int))は併用すればいい話じゃね? ごちゃ混ぜに話すなよ http://echo.5ch.net/test/read.cgi/tech/1317958045/457
458: デフォルトの名無しさん [sage] 2011/11/10(木) 23:20:16.10 何が防げてるの? http://echo.5ch.net/test/read.cgi/tech/1317958045/458
459: デフォルトの名無しさん [sage] 2011/11/10(木) 23:32:16.57 >>458 遅いIntegerやNum aを使うのを防げてるだろ だあ、もう beki1 a = a ^ 2 beki2 :: Int -> Int beki2 a = a ^ 2 beki3::Int -> Int beki3 a = a ^ 2::Int 下に行くほど、遅い型を使うの防げてる 以上 http://echo.5ch.net/test/read.cgi/tech/1317958045/459
460: デフォルトの名無しさん [sage] 2011/11/10(木) 23:40:30.36 先に書くだけじゃ、2がIntegerになるのは防げないんでしょ? http://echo.5ch.net/test/read.cgi/tech/1317958045/460
461: デフォルトの名無しさん [sage] 2011/11/10(木) 23:54:39.66 >>460 そうだな ただ、一般的には自分で型を書いた方が速い型を選べる (^(2::Int))も出してるのに、そこに拘るってのもどうなのよ? 併用すればいいじゃないかって書いたよな? そこは認めるのか? http://echo.5ch.net/test/read.cgi/tech/1317958045/461
462: デフォルトの名無しさん [sage] 2011/11/11(金) 00:20:31.17 もちろん併用は有効。 だけど>>442に>>443の回答は誤り。 http://echo.5ch.net/test/read.cgi/tech/1317958045/462
463: デフォルトの名無しさん [sage] 2011/11/11(金) 00:32:29.31 >>462 絡むんじゃなくて、こうだから、間違いって指摘しろよ 時間の無駄 http://echo.5ch.net/test/read.cgi/tech/1317958045/463
464: デフォルトの名無しさん [sage] 2011/11/11(金) 00:42:49.60 それこそ beki n = beki' n 2 http://echo.5ch.net/test/read.cgi/tech/1317958045/464
465: デフォルトの名無しさん [sage] 2011/11/11(金) 00:47:17.39 書き損じ・・・ それこそ beki n = beki' n 2 where beki'::double->Int->double beki' n m = n^m なら、ちゃんとn^2そのものを書く前に2の型も決められるしな (さすがに、こんな反論もどうかと思うが) http://echo.5ch.net/test/read.cgi/tech/1317958045/465
466: デフォルトの名無しさん [sage] 2011/11/11(金) 00:49:18.12 要するに型を書けば解決する話。 先に書くか後で書くかは無関係ですな。 http://echo.5ch.net/test/read.cgi/tech/1317958045/466
467: デフォルトの名無しさん [sage] 2011/11/11(金) 03:36:49.91 c言語でのint (*)[4]型っぽいものをhaskell的に表現する場合、 * = Pointer, [] = Array4, int = Intと置き換えて、 Pointer (Array4 Int Int Int Int)とでも書けるんだろうけれど、 int (*)[100]型とかになってくるととても書いていられない。 何か上手い方法はないだろうか。 用途ねーだろって突込みは無しで。 http://echo.5ch.net/test/read.cgi/tech/1317958045/467
468: デフォルトの名無しさん [sage] 2011/11/11(金) 08:48:39.45 >>467 コード生成じゃ駄目? http://echo.5ch.net/test/read.cgi/tech/1317958045/468
469: デフォルトの名無しさん [sage] 2011/11/11(金) 08:49:33.54 Data.Arrayってそういうのじゃないの?使ったことないけど。 http://echo.5ch.net/test/read.cgi/tech/1317958045/469
470: デフォルトの名無しさん [sage] 2011/11/12(土) 01:01:56.40 reactive-glutを試そうとしたら依存パッケージのcategory-extrasがインストールできなかった。 out of dateなパッケージかどうかすぐに分かる手段ってあるのかな。 http://echo.5ch.net/test/read.cgi/tech/1317958045/470
471: デフォルトの名無しさん [sage] 2011/11/12(土) 08:11:04.13 ListはもうEducationalモジュールに引っ越せ http://echo.5ch.net/test/read.cgi/tech/1317958045/471
472: デフォルトの名無しさん [sage] 2011/11/12(土) 12:18:07.24 >>471 引っ越したとして、代わりに何を標準ライブラリに入れるの? 今までの List と互換が無ければ今まで作ってきた資産が死ぬし、 さもなければ互換性を捨ててでも入れる大きなメリットがあるものじゃないと http://echo.5ch.net/test/read.cgi/tech/1317958045/472
473: デフォルトの名無しさん [sage] 2011/11/12(土) 15:32:33.20 haskellはrubyと比べてダメな言語。 http://d.hatena.ne.jp/mizon9/20111112/1321046483 http://echo.5ch.net/test/read.cgi/tech/1317958045/473
474: デフォルトの名無しさん [sage] 2011/11/12(土) 15:49:26.84 >>473 こういう総合的使い勝手に関して 関数型言語は時の洗礼を十分に勝ち抜いてはいないと思う 当面C#からF#を操作すればいいと思うしまだまだ本格使用はしない http://echo.5ch.net/test/read.cgi/tech/1317958045/474
475: デフォルトの名無しさん [sage] 2011/11/12(土) 15:49:41.43 >>473 そこで挙げられてる事に関しては俺もそうだと思う。 回避策はあるにはあるけど、いつも使える訳じゃないし。 http://echo.5ch.net/test/read.cgi/tech/1317958045/475
476: デフォルトの名無しさん [sage] 2011/11/12(土) 15:57:09.17 >>473 名前空間の問題はasでimportすれば解決するんじゃ? module が抽象化の単位だから module毎に名前空間を設定できればいいわけだし 操作とデータ型の分離はいわゆるexpression problemによくあるトレードオフそのもので どっちがいいとかじゃないと思う 分離してmoduleで管理でいいと思うけど class前提の人には受け付けないのか http://echo.5ch.net/test/read.cgi/tech/1317958045/476
477: デフォルトの名無しさん [sage] 2011/11/12(土) 15:59:22.58 >>473 SMLならモジュールで名前空間を実現しているから uri.schemeやuri.pathみたいに書けて、Rubyと遜色ない Haskellって大規模開発には適していないのかな? http://echo.5ch.net/test/read.cgi/tech/1317958045/477
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 501 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.080s