- 1 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 23:43:54.28 ID:Vh4eztBk.net]
- 関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト) www.haskell.org/ 前スレ 関数型プログラミング言語Haskell Part28 echo.2ch.net/test/read.cgi/tech/1428597032/
- 58 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 10:43:46.71 ID:txYt6xvX.net]
- >>57
project euler の何番がスペースリークのせいで解きにくかったか思い出せる? こっちでも検証してみたい。 思い出せないのなら、1番から順にやってみるけど。
- 59 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 11:25:17.95 ID:z+XsKe69.net]
- >>58
さすがにそこまでは覚えてないけど後半はコードにスペースリークがあると すぐセグメンテーションフォルトする 序盤の問題は時間もスペースも気にせず簡単に解ける問題が多いので その目的なら100番ぐらいから始めた方がいいよ 1番からだとさくさく進んで楽しいけどね
- 60 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 12:27:38.51 ID:txYt6xvX.net]
- >>59
分かった。 100番以降で、かつサイズが決め打ちできないものをやってみる。
- 61 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 21:52:59.71 ID:Wt4rS9Jl.net]
- Project Eulerでの答えを求めるのには十分でも
HackerRankのProject Euler+の同じ問題でTLEしたりしたことある
- 62 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 22:38:43.36 ID:ibzQibs1.net]
- say :: Show s => s -> IO ()
say s = “Say, ++ show s ++ “!!” print 1234 => Say, 1234!! print “Haskell” => Say, “Haskell”!! ああああああああ!!!(ブリブリブリブリュリュリュリュ!!!ブッチチブブブチチチブリリリブブブゥゥゥゥッッッ!!!)
- 63 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 00:13:24.79 ID:MMtIoejY.net]
- Showがどういう意図のものか理解してないで使ってるって話?
melpon.org/wandbox/permlink/qMLLG4dQGoOHcKXe
- 64 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 11:43:31.36 ID:OsDnSY6Y.net]
- showをユーザー定義する権利を与える代わりに「正しい」定義を決める義務がなくなる
というwinwinの関係
- 65 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 11:53:28.57 ID:GCEfrzc1.net]
- 法則を満たしてるか静的にチェックする機構をコンパイラに実装することは理論上
@不可能 A可能(だが現実には困難) B可能(で鋭意開発中) C
- 66 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 12:06:44.09 ID:OsDnSY6Y.net]
- 法則ではなくユーザーの自由意志です
- 67 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 07:07:08.08 ID:sKR8yojt.net]
- instance Show [Char] と書く方法の他に
instance Show Char の中で showList を定義するという方法もある
- 68 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 08:50:54.03 ID:lcTQYluv.net]
- 最近Haskellの勉強を始めたのですが、
["aa", "bb", f ["cc", "dd"] ] = ["aa", "bb", "cc", "dd"] となるような関数fはどのように書けるでしょうか もしくはそのような既存の関数はありますか
- 69 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 11:12:47.33 ID:CzfVK0w5.net]
- >>68 型が合わないのでかけないと思う
- 70 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 13:24:39.66 ID:lcTQYluv.net]
- >>69
やはり書けませんか… ありがとうございます
- 71 名前:デフォルトの名無しさん [2017/01/26(木) 16:38:08.74 ID:2yUJ7U50.net]
- 普通に++での結合じゃアカンのか?
- 72 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 16:46:28.90 ID:+E0dl1ly.net]
- たぶんその前の時点でアプローチがHaskellのやり方じゃないんだろう
- 73 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 17:04:34.61 ID:CzfVK0w5.net]
- スタック型言語なら直接68のやり方は可能だと思う
- 74 名前:デフォルトの名無しさん [2017/01/26(木) 17:09:08.58 ID:gPJK2FxR.net]
- アンパックしたいのか
- 75 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 17:18:35.09 ID:MclODevV.net]
- どういう文脈でそれをしたくなったのか説明してくれれば
うまい代替案が出てくるかもよ
- 76 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 17:36:01.96 ID:9y5sHdOj.net]
- 文脈は知らないが応用問題を作ればなんとなくわかる
length ["aa", "bb", f xs] の値がコンパイル時に定数になることを証明せよ または定数にならないような関数fを書け
- 77 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 20:00:55.44 ID:XEk5YWy9.net]
- >>76
応用つか全然違う問題じゃないか
- 78 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 21:43:31.09 ID:q6lSzUEJ.net]
- 68です
単なる興味本位で出来ないものかと頭を捻らせていたもので
- 79 名前:デフォルトの名無しさん mailto:sage [2017/01/27(金) 06:04:37.64 ID:gELNspyu.net]
- うーん
そもそも、それ許すとバグの温床になるからこその型だしねぇ。。。
- 80 名前:デフォルトの名無しさん mailto:sage [2017/01/27(金) 07:51:28.34 ID:6/LCWfy+.net]
- Cのプリプロセッサというのを使うというのはどうだろう
- 81 名前:デフォルトの名無しさん mailto:sage [2017/01/27(金) 08:14:39.10 ID:Gw4smznt.net]
- ["a","b"] ++ (id ["c","d"])
あかんの?
- 82 名前:デフォルトの名無しさん mailto:sage [2017/01/27(金) 08:53:18.21 ID:3bNTd4fp.net]
- それを許すと何も面白くない駄作の温床になるからね
- 83 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 01:14:43.56 ID:fSWa9KDr.net]
- Template Haskellの話題ではないのか
- 84 名前:デフォルトの名無しさん [2017/01/28(土) 03:42:22.11 ID:IY+AilYG.net]
- haskellだと簡潔に書けるので
-shared で .dll(in windows), .so(in linux) を作って使っているのですが、 import Data.Text (or Data.List.Split.Internals)等で関数を書くと .hsのコンパイルはいけるんですが -shared の時に
- 85 名前:デフォルトの名無しさん [2017/01/28(土) 03:43:06.88 ID:IY+AilYG.net]
- 定義されていない参照です, とエラーが出ます。
取り敢えず自分で関数書いてるので問題は無いのですが、haskellの勉強も兼ねて解消したいです。 どなたか教えて頂けないでしょうか
- 86 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 05:34:16.63 ID:vo7t9bEK.net]
- FTPだっけ。あれどうなったか知ってる人いる?
length (4,2) == 1 になっちゃうやつ。
- 87 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 09:59:41.44 ID:9bw7znio.net]
- path パッケージの Path.parseRelDir 関数で、引数に "." や "../" が指定できないのは何故?
"." や "../" って相対パスちゃうの?
- 88 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 10:15:30.83 ID:fSWa9KDr.net]
- > "." や "../" って相対パスちゃうの?
カレントディレクトリからの相対パスだが そのpathパッケージとやらはカレントディレクトリを認識してるのか?
- 89 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 16:29:13.45 ID:1e+Xw+ps.net]
- 重城良国
Haskell 教養としての関数型プログラミング Richard Bird 他1名 Haskellによる関数プログラミングの思考法 Haskell本が今度二冊も出るみたいですね
- 90 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 20:17:03.76 ID:9bw7znio.net]
- >>88
「カレントディレクトリを認識する」ってのがどういう意味なのか分からんのだが。 たとえば filepath パッケージに System.FilePath があるけど、 こっちのはカレントディレクトリを認識してるって言えるの?
- 91 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 00:01:01.66 ID:fPEtEvtP.net]
- >>87
なんかissueで普通ノーマライズするから不要で、そういうルールだとか言ってるが その割に/をハードコードしてたり 言ってる意味不明だから使わない方がいいぞこれ
- 92 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 08:43:35.35 ID:INpmjvgO.net]
- >>91
path パッケージのラッパーになってる path-io パッケージは良さそうなんだが、 path の方がそんなんでは、どうもな・・・ アドバイスありがと、止めておくよ。
- 93 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 08:52:55.32 ID:W0xWcefq.net]
- foldrと同じ働きの関数foldr'は
foldr' :: (a -> b -> b) -> b -> [a] -> b foldr' f v [] = v foldr' f v (x:xs) = f x (myFoldr f v xs) で定義できますが、:tで調べるとPreludeのfoldrの型は foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b になってます。 foldr'の型宣言を同様に修正するとエラーが出ます。 エラーが出なくするために二行目の空リスト[]を どう修正したら良いのか分からんとです。
- 94 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 08:55:53.89 ID:W0xWcefq.net]
- 訂正
上の myFoldr は foldr' の間違いです。
- 95 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 09:16:54.72 ID:OhLobWwB.net]
- これ見るのはダメなん?
https://hackage.haskell.org/package/base-4.6.0.1/docs/src/Data-Foldable.html#foldr
- 96 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 13:55:23.65 ID:/KLkodo+.net]
- Foldableは単にfoldr出来ますよーってだけの型クラスだから
リストなどのインスタンスを持ってこないと具体的には定義できない (==) :: Eq a => a -> a -> Bool だけでは定義しようがないのと同じ
- 97 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 15:59:36.88 ID:ExFk7aPU.net]
- FTPはとっくに取り入れられてた。base 4.8.0から。気付かんかったわ
- 98 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 13:32:39.96 ID:53XrODAY.net]
- stackアップデートできねえぞ
atomでエラーでたぞ ghciってなんでデフォルト一行なの 勉強用なの?ふつうつかわないの? atomとそのコマンド、パッケージ選び Gitって初心者なのに入れるの? ないとターミナルいれられないんだが ああめんどい コマンドプロンプト見にくい フォントきもい ターミナル必要なのか ビルゲイツしね ターミナルってのないとエディタからコンパイルできないの? コンパイルなし実行できないの? ライブラリとはなにか、どこにあるのか アトムから読めんのか ライブラリよんで勉強するもんなのか Windowsのディレクトリなにこれ ユーザー名フォルダの場所とか意味不明 パスってなに、パスの通し方 こんなんググらせんなよ よくこんなの考えやがったな やること多すぎ 時間かかりすぎ おぼえたくない 時間のムダ 技術じゃなくて雑学だな 自動化しとけまとめとけクソクソうんこ それでもプログラマか 啓蒙する気ゼロだなほんと
- 99 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 13:51:05.42 ID:53XrODAY.net]
- オブジェクトファイルとインターフェースファイルのこともちゃんとまえもって教えないとダメでしょ
qiitaとか入門云々とかはてなブログとかほんと死ねばいいのよ なんでもかんでも初心者にググらせてんじゃないよ!
- 100 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 16:06:50.00 ID:Iw+tyvVU.net]
- コンパイラは難しい
昔の古いインタプリタは簡単だった 確率は1/2じゃなくて実際は9割以上が難解な方を選ぶんだろう
- 101 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 17:56:57.37 ID:UXwydrfk.net]
- またワードサラダボットが稼働を始めたか
- 102 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 18:22:05.14 ID:C6fGSB5S.net]
- 初心者じゃなくなってもなんでもかんでもググってる俺
カン拡張って何?ふむふむわからん
- 103 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 18:27:07.04 ID:v0ndbkEe.net]
- Kan拡張?
聞いた瞬間分かるわ圏論由来ってwww 圏論の本読め
- 104 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 19:57:57.60 ID:M7LFtYkC.net]
- リンシャンカイホウ?
- 105 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 20:05:04.51 ID:Iw+tyvVU.net]
- 紙の本がなくなったら本を読むのもインストールで挫折する時代が来るかも
- 106 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 23:20:45.84 ID:9/lBQk1n.net]
- 俺の部屋にはインストールで挫折した本が積み重なっている
- 107 名前:デフォルトの名無しさん mailto:sage [2017/02/05(日) 14:17:32.23 ID:TDpThq2o.net]
- ネタバレはズルという思想があるよね
タダで教えてもらえるネタバレを全部理解してから本を買うという発想ができない
- 108 名前:デフォルトの名無しさん mailto:sage [2017/02/05(日) 22:41:58.34 ID:TdsB4n5F.net]
- FIT(Framework for Integrated Test)
fit.c2.com/ これの Haskell 実装にチャレンジしてる人いる? そんな人のブログやHP知らない? 試しに GitHub を探してみたけど、見当たらない感じ。
- 109 名前:デフォルトの名無しさん mailto:sage [2017/02/05(日) 22:42:57.06 ID:Whb3/S6q.net]
- 俺も龍を捨てて玉を詰むという勇気が出ない
- 110 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 12:52:47.67 ID:Ld2MqDtI.net]
- Haskell obj
- 111 名前:ectiveってどうなったの?
やっぱダメだった? [] - [ここ壊れてます]
- 112 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 14:32:11.26 ID:CcXtgB5F.net]
- >>110
これか? https://hackage.haskell.org/package/objective Haskell objectiveでググると最初に出てくる
- 113 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 14:44:23.19 ID:Ld2MqDtI.net]
- 使いやすさ的にどうだったのかなって。
作ったの日本人っぽいけど
- 114 名前:デフォルトの名無しさん mailto:sage [2017/02/06(月) 15:50:30.09 ID:CcXtgB5F.net]
- >>111
Haskellでの合成可能なオブジェクトの構成とその応用 https://fumieval.github.io/papers/ja/2015-Haskell-objects.pdf >この章では、本稿で提案するオブジェクトの定義やその性質について説明する。なお、これから >示すオブジェクトや関連する構造は、公開している objective パッケージ 1 に格納されている。 > 1 hackage.haskell.org/package/objective
- 115 名前:デフォルトの名無しさん mailto:sage [2017/02/08(水) 01:03:40.92 ID:E7OnquDd.net]
- functor分からんとHaskellは使えないの?
- 116 名前:デフォルトの名無しさん mailto:sage [2017/02/08(水) 03:27:27.73 ID:lPz/aekC.net]
- 凄いHを一通りやって、今はReal world haskellやってる途中
設計関連がまだよく分かってないな モナド変換子とか非同期関連もよく分かってないや 関数型の勉強で始めたけど中々難しい 言語としては今の所簡潔で好きではある、ってか他言語の括弧がキモく見えてきた
- 117 名前:デフォルトの名無しさん mailto:sage [2017/02/08(水) 09:54:44.42 ID:8j/X+nWQ.net]
- オフサイドルールには賛否両論ある
- 118 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 04:29:48.20 ID:SonJzAjc.net]
- >>114
んな事ない。 と言うか、昔はファンクタ自体無かった。 モナドあるならファンクタも入れろや的な。 モナドも、使うぶんにはいつの間にか使ってる感じ。 モナドとは何か?とか考えると難しいけど、まあモナドもファンクタも型の一種。 そう言う特性の関数や演算子を使うための。 言わば、処理の流れにも型があるとでも思ってくれ。
- 119 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 08:20:37.05 ID:CYxwUQWJ.net]
- >>114
実際的に重要なのはFunctorというよりも(そのインターフェースの)fmapの理解かな 多分よく出会うのはListのmapだけど、まずはこいつを使いこなせるようになれば Haskellらしい、関数型らしい書き方ができるようになってくると思う
- 120 名前:デフォルトの名無しさん [2017/02/09(木) 08:31:16.17 ID:/fB7Lbok.net]
- fmapとmapの名付けは解せない
- 121 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 08:58:32.86 ID:UTxumv29.net]
- モナド則は
型と関数と関数合成が満たすべきルール。 ただし自作モナドがモナド則を満たすことを保証する機構はない。
- 122 名前:デフォルトの名無しさん mailto:sage [2017/02/10(金) 15:45:40.33 ID:5JASqTbe.net]
- fromIntegralに短縮名つけるのが癖の人っている?
fI = fromIntegral 的な
- 123 名前:デフォルトの名無しさん mailto:sage [2017/02/10(金) 18:50:22.57 ID:xMx0FpSS.net]
- 長くなるならletで別行で定義する
- 124 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 23:22:07.65 ID:8gjNJV43.net]
- メッセージングシステムを主なアーキテクチャとしているアプリケーションにおいて、
そのメッセージの種類を増やすことでアプリケーションの機能を拡張する際に、 コンパイルすべきモジュールの数を最小限に抑える方法を探しています。 メッセージングシステムというと大げさかもしれませんが、 たとえば Win32API のウィンドウメッセージのようなものを想像してください。 モジュールAとモジュールM、およびモジュールTがあるとします。 モジュールTの中ではMsg型が定義されいます。 data Msg = MsgX String Int | MsgY [Double] また、モジュールTはモジュールAとモジュールMの両方からインポートされています。 モジュールMの関数はモジュールAの関数を呼び、モジュールAの関数は型Msgの値を返します。 モジュールMの関数はMsgXが帰ってきた場合と、MsgYが帰ってきた場合とでその後の処理を変えています。 ここで、このアプリケーション機能を拡張しようと、Msg型にデータコンストラクタMsgZを追加しました。 そして、MsgZを返す関数を持つモジュールBを新たに作りました(もちろんモジュールTをインポートしています)。 ただし、既存のモジュールAは何も変更していません。 しかしそれでも、これをビルドする際にはモジュールAの再コンパイルが必要です。 インポートしている、つまり依存しているモジュールTが更新されたからです。 このような単純なメッセージングシステムの作りだと、どうしてもアプリケーションを拡張する際にモジュールTの更新が伴い、 それによって、変更していない多くのモジュールの再コンパイルが必要になります。 かといって極端な話、メッセージや付随するデータを ByteString 型にシリアライズすれば再コンパイルの問題は解決しますが、 今度は型の不一致や未定義メッセージなどのバグがコンパイル時に発見できなくなり、それもマズいです。 厳格な型システムの恩恵にあずかりながら、かつ不要な再コンパイルを抑えるようなメッセージングシステムの構築方法はないでしょうか。
- 125 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 13:50:57.94 ID:EOfitV0o.net]
- javaですら良く分からんやつに
haskellのモナドなど分かるはずも無く
- 126 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 15:45:54.11 ID:+1FsHT8L.net]
- ポインタ理解するときもモナド理解するときも小1で自転車補助輪外す時もみんな同じ
- 127 名前:エ覚だった気がする
学習は滴定曲線のように、『気づいたら知って』いた [] - [ここ壊れてます]
- 128 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 16:10:07.24 ID:QGOwrBDz.net]
- たいていの概念は名前も説明も勿体つけてるが実はたいしたことはない
さらに最悪なのは長々と理屈ついている割に扱いは他の概念と変わらないやつだ そういうのを世間では屁理屈という
- 129 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 17:52:39.61 ID:C9OkM4dT.net]
- 西尾維新批判はやめろ
- 130 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 21:33:24.01 ID:hoDvKKnX.net]
- アベノミクスとか新常態とかもそうだよね
- 131 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 22:25:13.91 ID:cs8Gyxec.net]
- haskellの本が出るみたいだから買ってみよう
- 132 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 23:59:55.00 ID:t7tEKqZ9.net]
- >>89の二冊か
- 133 名前:デフォルトの名無しさん [2017/02/14(火) 00:10:05.79 ID:haBe4Sdm.net]
- お前らってこういうのチェックしてたりするの?
Haskell News haskellnews.org/grouped
- 134 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 07:07:04.56 ID:0/yLOI7Z.net]
- そもそもfoldはループより速い?
- 135 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 10:36:57.61 ID:CVjuh2pk.net]
- >>132
Haskellにはループ構文はありません。 一体何と比較した話でしょうか?
- 136 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 16:50:38.39 ID:m6BuE6wx.net]
- >>133
C
- 137 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 21:33:40.60 ID:jOgsWiWm.net]
- >>134
Haskellの中で複数のアルゴリズムの比較はできますが、 C言語のforループとの速度の比較はできません。
- 138 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 23:12:33.60 ID:Bh34MboJ.net]
- バイナリを吐かせて逆汗すれば比較できるんでないの?
つっても多くの関数呼び出しはインライン展開されるんだろうが
- 139 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 05:29:57.20 ID:De10g5Ib.net]
- >>132
データ構造やコンパイラによる。 Haskellは基本リストなのでアドレスが連続してるとは限らない。 Cだと同じ処理を配列に施す様なループはSIMD命令に変換される。 Haskellはそう言う命令に変換する為のデータ構造使う。 (データの連続性を保証するためにもデータ構造が別なのだと思う) IntelC++コンパイラとかだと最新のSIMD命令に対応してる。 gcc程度まではHaskellでも書き方次第では追い付けるだろうけど、CPUメーカー謹製の最新CPU対応コンパイラにまでは勝てない。 入門書レベルではHaskellはCに勝てないけど、いかなる並列・並行処理も否定してない。
- 140 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 06:42:21.88 ID:+7DpWr8H.net]
- そもそもHaskellのfoldとCのforループとでは、
速度を比較するための条件をそろえる事ができません。 たとえばプロセスを立ち上げてから処理し終えるまでの時間、 このレベルであればHaskellとCの比較に意味はあります。 実行環境という条件を同一にできるからです。 (ちなみに、この場合はCの方をHaskellより速くすることができます) 一方HaskellのfoldとCのforというレベルでは、まず計算するために入力するデータが違います。 foldの入力データ型はリスト(Foldableのインスタンス)ですが、同じものをCで再現できますか? 入力データをそろえなければ「関数程度のレベルの比較」に意味はありません。
- 141 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 07:03:08.40 ID:mu4JLPUi.net]
- 扱うモナドがファンクタのとき
return . f =<< m は f <$> m とシンプルに置き換え可能なのですね
- 142 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 10:15:38.52 ID:JnBGC/9x.net]
- 何年か様子見してたけどやっぱり流行らんな
難しいから底辺には普及しないはわかるが だったら上位の連中は食いつくかと言えばそんなことはなかった
- 143 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 11:05:35.10 ID:3lGP54OB.net]
- 難いのに普及したC
- 144 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 11:41:14.45 ID:1S7+uRG8.net]
- C以前の言語がひどすぎたんだ
- 145 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 13:18:52.67 ID:jktpXUxB.net]
- えっ、Modula-2とかCより読み易くて
低レベルのシステム記述も出来たのに 全然普及せんかったでw 政治的理由と思うが突然Turbo Modula-2 の販売が中止になってTurbo-C出たけどね。
- 146 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 17:36:32.27 ID:kkhdLQ6B.net]
- 出た! 陰謀論!
- 147 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 00:44:11.97 ID:PsfAYoHu.net]
- 流行り廃りに合理的な理由なんてない。
- 148 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 04:02:18.89 ID:zxmzXW5F.net]
- 普及言語からHaskellに乗り換えに難しく感じる部分
・do記法は関数で構成されるという関数型プログラミングの理解のための学習の邪魔をする(混乱させる) ・型を気にせず書けるスクリプト言語からだと強力すぎる型推論のおかげで型があるという感覚になじめず型に関するエラーでイラ立つ ・C言語系からだとreturnがreturn構文じゃない、if-elseが式である ・イミュータブルしかない、再代入が出来ない、(ように感じ)思うようにコード書けず辛い ・Haskellについて語る書の書き方や視点が数学寄りのものが多く理解が難しい(奴らが言うようなこまけえ数学っぽいこと気にせんでもコードは書けるっちゅうに純粋さにこだわりすぎ)
- 149 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 15:22:31.85 ID:VWTLMYuE.net]
- そもそもハスケルの強みって何?
計算時間ではビジュアルスタジオに遠く及ばないだろ? 描画とか数学的処理も他の高級言語使った方がよくね?
- 150 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 16:47:16.10 ID:fRybmYDX.net]
- 仕様記述言語の強み
自分が強くなるために右往左往するよりも 強くなりたいならああしろこうしろと指図して右往左往させる側
- 151 名前:デフォルトの名無しさん [2017/02/16(木) 18:17:34.39 ID:VWTLMYuE.net]
- 右往左往の意味がよく分からんが、自分が考えて手を動かす量が減るということかな?
- 152 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 19:16:01.32 ID:9Ohg+UxU.net]
- Haskellでゲーム作りたいです!
- 153 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 20:28:16.21 ID:qwVWj3LU.net]
- 言語仕様はともかく実行環境がおそ松すぎる
- 154 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 21:04:48.77 ID:lgZA8NJM.net]
- >>151
どのような意味で言っているのかよく分かりません。 もう少し詳しく説明していただけないでしょうか。
- 155 名前:デフォルトの名無しさん mailto:sage [2017/02/17(金) 08:05:51.13 ID:nCBINic8.net]
- >>151
腐女子なの?
- 156 名前:デフォルトの名無しさん mailto:sage [2017/02/17(金) 08:37:50.87 ID:iKIs1hpk.net]
- 遅いと言われようと、フィボナッチ数列をzipWithで1行で書ける言語というところに魅力を感じている
(そんなに何度もフィボナッチ数列を書く機会があるわけではないが表現力の一例として)
- 157 名前:デフォルトの名無しさん mailto:sage [2017/02/17(金) 10:28:30.13 ID:nCBINic8.net]
- 1行フィボナッチって結構あるんだな全然知らなかった
https://wiki.haskell.org/The_Fibonacci_sequence
- 158 名前:デフォルトの名無しさん mailto:sage [2017/02/17(金) 13:55:10.09 ID:gJ+iD/w/.net]
- パスカルの三角形を出したいんだけど、
++使ってるのが気に食わないのだがうまく消せなかった import Data.List (unfoldr) pastri :: [[Int]] pastri = unfoldr (\l -> Just (l, body l)) [1] where body xs = 1 : zipWith (+) xs (tail xs) ++ [1] main = mapM_ print $ take 15 pastri
|

|