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/
331 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 13:28:31.27 ID:1X+/xglb.net] ごめん 15年以上前のうろ覚えのラムダ計算の知識しかないんだけど、 1 とかの基本型をチャーチ数のようなラムダ式で表す体系は 型なしラムダ計算でしかなりたたなくて、 型付きのラムダ計算は自然数などの基本型はラムダ式では表せないんじゃなかったっけ?
332 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 14:57:12.95 ID:MOddalxm.net] うーむ。。。 まず左結合のチャーチ数をどうやって右結合のラムダ式で表現するんだろう?とか、色々イメージが掴めん。。。 確かに整数型は整数としか計算出来ないけど、型変数とかだったらズルイかもだけど行けそう。 私もそんな話は昔読んだ気がするんだが。。。 詳しい人を待ちますかね。 チャーチ数そのものは代数的型で簡単に実現出来るけど、そう言うのじゃないんだよね?
333 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 19:46:38.88 ID:G+dyZ5vN.net] 適切な抽象化があれば値がどうやって表されるかなんてどうでもいいよ
334 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 23:29:10.15 ID:2Q0thsFc.net] 関数言語得意なお前らlazy Kとかunlambdaとか得意そう
335 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 23:38:48.37 ID:2Q0thsFc.net] 正直言ってこういうのサッパリ分からん ラムダ計算で代数的データ型を表現する方法 - @syamino はてなダイアリー d.hatena.ne.jp/syamino/20120524/p1
336 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 07:20:37.24 ID:dRkpt71/.net] もはやHaskell関係ないって言いたいところだけど そう言えばチャーチエンコーディングってfoldr/buildそのものだな
337 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 09:08:18.51 ID:/ij5EOcX.net] アプリ作る話は一切出てこない
338 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 10:11:28.20 ID:nyANDfpK.net] Jpegの何バイトめから何バイトがどんな情報とかの仕様教えてくれたら頑張ってみるよ。 テキストなら割と扱えるんだけど、バイナリはデータ構造知らんと何とも。。。 こう言うところでプログラマーになれんかった。
339 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 10:28:52.14 ID:5gNjoiIm.net] 圧縮なんてしない方がアプリを早く作れるよ GUIも使わない方が早く作れる それで素早く作ったアプリは原始的なので人に見せない 科学が発達すればするほど最先端に追いつくまでの時間は長くなる
340 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 10:38:06.28 ID:y9k82SwL.net] GUI使わないプログラム普段おまえら使うのか いったい何をやっているんだ 科学計算は日常系でないからなしな
341 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 11:24:38.37 ID:ml8UsgdM.net] プログラムの世界でGUI依存なんて基本的に羞恥なんだが素人かな
342 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 11:26:25.86 ID:nyANDfpK.net] おいらはプログラマーの道をすっぱり諦めたから、当時一番気に入ったHaskellの残留思念だけで書きこんでる。 写真がプログラミング以上に楽しいから、Jpeg弄れるライブラリあったら触ってもいいかな。 HaskellでGUIと言えば、MSがHaskell+WXでGUIのサンプルをpdf(英語)で公開してから、海外のHaskellerは軒並みWX使ってるっぽい。 おいらの時はRWHにgtk2hsが載ってたからそれにしたけど、MSのpdf読む限りWXのがコード短い。。。 RWH恨むぞ。。。
343 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 11:26:31.41 ID:fkqPQF0T.net] 素人に売りつけるソフトにGUIは不可欠
344 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 13:06:45.39 ID:dPKXkep6.net] アーキテクチャの話も一切出てこない 俺達は汎用プログラミング言語でいったい何をしているのか
345 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 15:22:04.96 ID:nyANDfpK.net] デザパタみたいなの? パターンって程実践で使われてないだろ。 んー。。。 使ってた感触だと、割と行き当たりばったりからの仕様変更でも何とかなるのが関数型言語の強み?と思わなくも無い。 ちょっとの変更にも関数経由するから、自然と既存の関数使い回せないか考えるし、関数型言語もそう言う風に進化して行ってるように感じる。 某スレで話題になったキャットドアクラスも、変な縛りがなければ究極的には機能の組み合わせでドアが開くかどうかの問題なのだから、タプルにBoolを並べれば良い。 ただ、同じBool値ばかりだと違う機能を付いてる(付いてない)と表現しやすいので、適当な型を作ってコンパイラが順番間違えたらエラー出すようにする。 cd = (False,型Aの値) 値が欲しかったら getA t = snd t または引数の時点で直接欲しい値にアクセス。 getA (_,x) = x 仕様の拡張に関してはタプルを入れ子にする事とする。 継承というよりは委譲に近い。 理屈では(以前の機能,拡張機能)の形でいくらでも入れ子に出来る。 cdEx = (cd,型Cの値,型Dの値) cdFX = (cdEx,型Eの値) 基本機能だけなら基本のタプル取り出して使う。 getA $ fst cdEx 拡張機能だけまたは、拡張機能と基本機能の組み合わせは引数の時点で(以下略) getC (_,x,_) = x getAD ((_,x),_,y) = x + y ただ、関数型言語は元々多くの状態を管理するのに向かない。 例の通り、構造が複雑になると扱い難い。 HTMLなりXMLなりXAMLなりに状態管理は任せた方がいい。 んじゃ、おいら夜勤明けなんで寝るわ。 お休みzzz...
346 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 15:49:01.36 ID:23KWF3U2.net] 科学計算が日常じゃないってマジ?
347 名前:デフォルトの名無しさん mailto:age [2017/04/29(土) 16:12:38.77 ID:dPKXkep6.net] しかし多くの状態を楽に管理できなきゃ、 ゲームも商支援系ソフトもクリエイター系ソフトも何もまともに作れん 作れたとしても、後のメンテが辛くなるコードが出来上がる 向いているのは自身で状態を維持変化しなくてもいいような、 フィルターとしてモデリングできるものしかなくなる たとえば linux の簡単なコマンドや web アプリ、FX自動取引システムくらいか 処理速度の問題は実用的にはほとんど気にならないレベルだと思うし、 メモリリークの問題はそれがHaskellだから諦めて、せいぜい気をつけろと言える が、状態管理のしにくさは、これが解決すれば 爆発的にユーザーが増えそうなだけに、何か発明がほしいな
348 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 20:54:16.08 ID:5gNjoiIm.net] 抽象的な状態遷移はできるでしょ ただ具体的な現実の状態を忠実に再現しろと言われるとよくわからない 忠実さを競う意味がわからない
349 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 22:50:14.03 ID:nyANDfpK.net] おはー。 そこよな。 IORefとかで状態管理出来るけど、それだとデフォルト引数とかある普通の言語の方が楽。 どっちかと言えばWebプログラミングみたいにHTMLやDBに状態持ってもらって、ここの項目をこう加工したいって時だけHaskell的なのが良いと思う。 奇しくもMVCとかMVVMのモデル。 キャットドア問題みたいなのは問題自体の使いどころが判らん。 おいらは問題を解決したいのであってクラスを作りたいんじゃ無い。 オブジェクト指向でなぜ作るのかって本のジャンケンを一対一から多人数に拡張みたいなのが問題として本質を突いてると思う。 本当の仕様変更って、一旦根本から考え直さないといけない事があって、解決したいのはそこだからね。 オブジェクト指向だと、結局一旦全部壊してクラスで表現して解決。 関数型言語だと一旦バラしてリストとか加えて使い回せるのは使い回
350 名前:キ。 [] [ここ壊れてます]
351 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 00:00:51.50 ID:qmSAdND7.net] 関数型を選択することで、あるレベル以上の密結合を完全に禁止できる??
352 名前:デフォルトの名無しさん mailto:age [2017/04/30(日) 00:09:16.78 ID:mJmGYhZX.net] >>346 禁止と言うのが、言語仕様としてコンパイラに弾かれるという意味なら、禁止にはできない。 そもそも、結合度と関数型とは何も関係ない。
353 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 00:24:21.53 ID:SbBDypWI.net] そんな大規模なの作った事ないけど、少なくともクラスみたいにデータと手続きが密接に関係してるものよりは使い回しが効くよ。 ただ、それは関数型言語だからって訳じゃないと思う。 Cがグローバル変数の問題解決して、ジェネリック(テンプレート)導入すればそれで済む。 Goが一番それに近いのかな?(でもジェネリック無いんだよな。。。) 関数型言語はグローバル変数が読み込み専用で、問題になり難いから解決し易かっただけ。 私は文法の美しさでHaskellに惚れてるだけで、Haskellが絶対の解では無いと思ってる。 手続き型にはデフォルト引数とか、メッセージ引数と言う、引数の数や順番を減らしたり入れ替えても問題無い仕組みがある。 それぞれのメリット/デメリットをうまく組み合わせれば良い。
354 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 08:17:07.40 ID:L9owkeUM.net] 正の整数が1万個格納されたリストAの中に偶数が2個以上あるか調べたいです 手続き型だとcount=0みたいな変数を用意してループを回してcountが2になったらループを打ち切るという形になると思うのですが、 haskellだとどう書けばいいでしょうか? filterしてから数を数えることも考えたのですがそれだと2つ見つかってからも処理が続くので少し非効率的な気がしてます 初歩的な質問で申し訳ありませんがご教授いただければ幸いです
355 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 09:22:52.54 ID:muUl2D49.net] >>349 haskellは遅延評価だからtakeとfilterで無駄なループしない length . take 2 $ filter even [1..]
356 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 09:38:09.96 ID:TrluKRLJ.net] その手続き型でのカウンタ変数を蓄積引数にするだけ solve = solve' 0 where solve' 2 _ = True solve' _ [] = False solve' n (x:xs) = solve' (if even x then (n+1) else n) xs main = print $ solve [1,3..1000001]
357 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 11:06:48.65 ID:d2LalM1x.net] >>350 >>351 なるほど…ありがとうございます どうしても手続き型の考え方に引っ張られてしまってダメですね 精進します
358 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 11:18:51.46 ID:XSKy6kSK.net] 遅延評価が必ずループを打ち切る保証はない length (repeat ()) >= length [] --> ⊥ longer (repeat ()) [] --> True longer [] _ = False longer (_:a) (_:b) = longer a b longer _ _ = True
359 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 11:46:14.32 ID:y6q+iQAV.net] 遅延評価だからtake 2で必ず評価止まるわ
360 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 11:52:30.52 ID:IaTjJD59.net] 入力が無限でその中にevenがなけりゃtakeでも止まんないっしょ
361 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 12:35:32.98 ID:CeQn+bFS.net] さすがにその指摘は意味ないと思うけど
362 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 13:23:37.16 ID:XSKy6kSK.net] でも人間にとって無意味な手をコツコツ打って勝つ戦略って最近の人工知能がやりそうだ
363 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 14:06:36.95 ID:muUl2D49.net] >>355 そんな例だと遅延評価関係なく解決不可能だろう
364 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 15:43:00.00 ID:YV6k5aHw.net] むしろ止まらないのが正常な振る舞いだと思うの
365 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 17:46:12.38 ID:QnncI6PA.net] >>355 ちゃんと1万個って言ってるのに、どうして自分の都合の良いように前提条件変えちゃうの? 人の話聞こうよ! ゾイゾイ言ってないでさあ!
366 名前:デフォルトの名無しさん [2017/05/01(月) 23:03:54.91 ID:PiVFXFTP.net] 1まんこ
367 名前:デフォルトの名無しさん mailto:sage [2017/05/02(火) 01:06:52.67 ID:98ZJhHZq.net] 型でガッチガチに固めてコンパイルエラーで危険なコード通すの阻止してくる関数型言語の姿勢ってフールプルーフ?
368 名前:デフォルトの名無しさん [2017/05/02(火) 07:41:56.01 ID:kHyZ6XSn.net] >>360 草ァ!
369 名前:デフォルトの名無しさん mailto:sage [2017/05/02(火) 10:12:37.54 ID:HGZvLmNR.net] >>360 ゾイ!!!!!!!!!
370 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 16:56:36.78 ID:8xTy/mbt.net] ハスケルの発音はどこにイントネーションを置けばいいですか?
371 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 17:08:16.15 ID:j+V3ZaYg.net] はぁすくぅ
372 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 17:25:56.12 ID:YQuBqP26.net] ハースニールと呼んであげて
373 名前:デフォルトの名無しさん mailto:age [2017/05/03(水) 17:34:41.80 ID:3CkyOJSn.net] >>366 「haskell pronounce」でググれば簡単に https://wiki.haskell.org/Pronunciation に行き着く。 そうすれば、 https://mail.haskell.org/pipermail/haskell-cafe/2008-January/038756.html に案内され、疑問が解消されるはずだ。
374 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 19:23:38.05 ID:evrxvkuv.net] はあすこぅ
375 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 23:04:12.27 ID:1Ttf2z2u.net] Cabal ケバール
376 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 23:21:41.48 ID:mJ/QVcTI.net] ghcよりcabalより先にstackを入れる。
377 名前:デフォルトの名無しさん [2017/05/04(木) 00:29:46.99 ID:M/Hnicnq.net] YouTubeをhaskellで検索かけりゃいくらでも聞けるだろ
378 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 03:31:51.49 ID:gAUNCpWB.net] haskellでキーボードから入力した値をそのまま出力する場合、必ず n <- getLine putStrLn n のように一旦変数に束縛する必要がありますか? 一行では書けないのでしょうか
379 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 03:52:33.18 ID:0GlJDnqX.net] main = getLine >>= putStrLn
380 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 03:55:26.58 ID:gAUNCpWB.net] >>374 ありがとうございます
381 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 04:12:42.09 ID:0GlJDnqX.net] ちなみに main = do ____n <- getLine ____puStrLn n と main = getLine >>= \n -> putStrLn n と main = getLine >>= putStrLn は、等価。 do形式はモナド形式を手続き型っぽく見せる糖衣構文に過ぎない。 最後のはモナド形式とカリー化を利用した部分的用で見た目の変数を無くしただけ。 モナド形式だとプログラム全体が一つの式だと言うのが良く分かる。
382 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 05:28:10.40 ID:DGL+h71J.net] ___n は誤解を招く _korehaTsukaimasen
383 名前:デフォルトの名無しさん [2017/05/04(木) 06:57:02.33 ID:M/Hnicnq.net] getLine >>= putStrLn じゃなくて interact はダメなん?
384 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 12:19:44.49 ID:xtfIuMNG.net] そもそも、getLineは1行しか読まないしな
385 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 14:29:46.30 ID:gUFA1lSr.net] >>378 interactは変数に束縛してごにょごにょする処理を隠蔽してるだけだから 「必ず一旦変数に束縛する必要がありますか?」の答えとしては若干嘘かも
386 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 16:34:00.03 ID:UGR/WMPx.net] 束縛ってコード(人間の視認性)レベルの話で、コンパイラが吐くバイナリではキャンセルされてるんじゃないの? バインドで(ポイントフリーみたいに)やったのと変わらないようになってんじゃないの
387 名前:デフォルトの名無しさん mailto:sage [2017/05/05(金) 21:55:20.21 ID:9ig94Wv/.net] Haskell 教養としての関数型プログラミング 単行本 ? 2017/4/15 重城良国 (著) https://www.amazon.co.jp/dp/4798048062/ 824ページって超大作だな Haskell本の決定版か?
388 名前:デフォルトの名無しさん mailto:sage [2017/05/05(金) 21:56:45.82 ID:9ig94Wv/.net] Haskellによる関数プログラミングの思考法 単行本 ? 2017/2/28 Richard Bird (著), 山下伸夫 (翻訳) https://www.amazon.co.jp/dp/4048930532/ こっちはどうなのだろう? 感想求む
389 名前:デフォルトの名無しさん mailto:sage [2017/05/05(金) 23:25:45.93 ID:e6epJNrq.net] >>383 >>201 数独ができるようになるけど、ワイはすごい本の方が好きや
390 名前:デフォルトの名無しさん mailto:sage [2017/05/05(金) 23:34:27.84 ID:RNJ7gaAH.net] すごい本やない。 すごい「H」本や。
391 名前:デフォルトの名無しさん mailto:sage [2017/05/05(金) 23:53:12.22 ID:fZIf3DTG.net] 初めてのCっぽくて好き
392 名前:デフォルトの名無しさん mailto:sage [2017/05/06(土) 00:17:40.31 ID:gZLP5YIG.net] getLineでコンソールから手動入力する時、バックスペースとかで修正出来ないのってhaskeline使う以外に何か方法無いのかな?
393 名前:デフォルトの名無しさん mailto:sage [2017/05/06(土) 00:28:11.74 ID:MHgXx5Es.net] rlwrapとか?
394 名前:デフォルトの名無しさん mailto:sage [2017/05/06(土) 02:13:17.67 ID:gZLP5YIG.net] うーん、そういうのじゃないな
395 名前:デフォルトの名無しさん mailto:sage [2017/05/06(土) 18:51:05.79 ID:smzwp1ku.net] Comonadでオブジェクト指向を実現できるって聞いたけどほんと?
396 名前:デフォルトの名無しさん mailto:sage [2017/05/06(土) 23:14:55.28 ID:6S4yhtdG.net] スレ違いかもしれませんが、2つのリストに一致する項目だけ抜き出したリストを作るみたいな問題があったとき、 集合論だと集合Aと集合Bの積集合A∩Bを求めるような解き方をすると思うのですが、Haskellのようにラムダ計算が 基になっている関数型言語だとそもそもの考え方や物の見方が違ったりするのでしょうか? Haskellを学び始めたはいいんですが、結局他言語のパラダイムを無理やりHaskellに適用させているだけのような気がして不安です
397 名前:デフォルトの名無しさん [2017/05/07(日) 01:09:26.23 ID:875uFfQS.net] >>391 質問に答えるだけの知識を持ち合わせていないので一応コードだけ intersect :: Eq a => [a] -> [a] -> [a] intersect xs = filter (`elem` xs) リスト内包表現でも書けるけど関数型っぽいのはこういう書き方なのかも
398 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 01:46:15.37 ID:s5HwRSgU.net] >>391 チューリング完全という意味で、他言語とHaskellは等価というのが数学的な見方だな もし言語が複数存在する原因を知りたいなら、数学的な見方はほとんど役に立たないな
399 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 02:07:21.95 ID:J1yK9zIW.net] >>392 >>393 ありがとうございます チューリング完全でさえあればそれ以上は計算モデルより言語仕様に合わせた方が良さそうですね いろいろ試してみて、一番スマートに書けるように精進します 今のところHaskellが一番面白いです
400 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 13:16:11.57 ID:J1yK9zIW.net] >>392 ちなみに、mapやfilterとリスト内包表記は内部的にはここが違うとか、パフォーマンスが 違うとか、あるいはこういうときはこっちの方がいいとかはあるのでしょうか?
401 名前:デフォルトの名無しさん [2017/05/07(日) 16:32:45.84 ID:YN83nmbH.net] リスト内包表記はconcatMapを使うからネストできる [f x y | x <- xs, y <- ys, p x y] == concatMap (\x -> concatMap (\y -> if p x y then [f x y] else []) ys) xs パフォーマンスは実際にghcがどういうコードを吐くかだけど そのままconcatMapでもmapやfilterと同じような最適化が行われるし 必要なければリストの結合も行われない
402 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 16:37:16.65 ID:f0nSghKy.net] リスト内包のほうがパフォーマンスでるらしいけどHaskellのパフォーマンスチューンングは難しいから当分気にしないほうがいい 待ってる間に線形型で楽々チューニングできるようになるかもしれないし
403 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 16:58:43.74 ID:3IJNEy2Z.net] >>396 >>397 ありがとうございます ネストの有無などで自分なりに考えながら使ってみます
404 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 17
] [ここ壊れてます]
405 名前::18:00.54 ID:m17h7+4k.net mailto: 内包表記と再帰を組み合わせることも可能。 夢が広がりング。 [] [ここ壊れてます]
406 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 22:35:33.72 ID:t8zqh9+K.net] Web系でもいいのですが、フリーウェア(できればオープンソース)のアプリケーションで、 Haskellで作られたものって何かありますか? Haskellプログラマだけでなく、一般の人も使っているもので。 もしくは、みなさんならHaskellでどんなアプリケーションを作ってみたいですか?
407 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 22:48:03.22 ID:ESaiO+gS.net] Pandocあたりは比較的広く使われている印象
408 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 23:26:23.39 ID:xgXJ2OQ8.net] あとはShellCheckだな。bash初心者はとにかくこれ使えって話題のシェルスクリプト更正ツールだ。
409 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 00:31:05.17 ID:XyXCIute.net] オーケーグーグル Haskellで日本語文字列(Shift-JISやEUC-JP)のファイルを正しく処理する方法
410 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 17:26:21.06 ID:kaDHepSW.net] みんな夢がないね。 ぼくなんてHaskellプログラム一つでお城のような家が建てれたよ。
411 名前:デフォルトの名無しさん mailto:age [2017/05/08(月) 22:42:37.72 ID:0FON9WNL.net] >>400 です。 ありがとうございます。 Haskellで作られたアプリケーションの方は2、3個紹介されるかなと思ってましたので、 まぁ予想通りです。 ですが、作りたいアプリケーションのレスが1日経っても皆無なのは驚きました。 (>>403 がいまいち分からない。これは私へのレスですか?) 私は年賀状の宛名をデザインするWebアプリを作りたいと思い、 「Beginning Haskell」を読んでWebアプリの勉強中です。 皆さん、作りたいものは何もないんですか? ゲームとかオーサリング系とか、マストドンをhackするツール(crackではなく)とか...
412 名前:デフォルトの名無しさん [2017/05/08(月) 22:56:09.94 ID:9wTmIyqX.net] GitHubとかでHaskellで検索かけりゃ何か出てくるんじゃねーの?
413 名前:デフォルトの名無しさん [2017/05/08(月) 23:03:23.31 ID:a/GZsbco.net] 論理に基づく人工知能を作るならHaskellがぴったりじゃないかと思うんだけど、プログラミングの技能も論理学の知識もないから作れない 細々と勉強はしてるけど
414 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 23:31:16.69 ID:Vtk8jBj4.net] 自動イタ電器とか作れや
415 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 23:32:41.17 ID:9whwcEDU.net] 達人プログラマーになりたい欲求はあるけど何かを作りたいっていう欲求は薄いわ
416 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 23:43:37.38 ID:iNFmh6sq.net] やはりゲームだな。あとはGUIアプリ。なにかのエディタのようなものがいいな。 Haskellで複雑な状態を扱うのは困難、と言ってる人らに反論したい。 実際のところはどうなのか想像する前に、まずはそういう状況に直面する必要がある。
417 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 23:49:55.75 ID:iNFmh6sq.net] EmacsのプラグインもHaskellで書きたい。正格データと遅延データを色分けして表示できたら嬉しそうだ。 GHC API を使えばできるかもしれない。 なんにしてもHaskellでやりたい。俺はもうLispは嫌だ…
418 名前:デフォルトの名無しさん mailto:age [2017/05/08(月) 23:59:34.03 ID:0FON9WNL.net] >>409 どういうことですか? 私が知っている達人プログラマ、要するにハッカーですが、 彼らはみな何かを作ってました(ます)。 なので、作ることに関心が無い達人プログラマというのが想像しにくいのですが。 あ、競技プログラミングのトッププレーヤーとかですか?
419 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 00:07:55.03 ID:CfiI0NLl.net] >>411 Haskellでエディタ書いてくれ common lispで書いたエディタもあることだし
420 名前:デフォルトの名無しさん [2017/05/09(火) 00:12:52.22 ID:PrpfKmLN.net] 作る以外に改造とかに気合入れる人とかもいるんじゃね?
421 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 00:50:22.97 ID:j9MX7/aM.net] >>413 今は外部言語でかけるしくみがあるから、エディタそのものを置き換えなくてもいいんだ。 それが現実的だと思う。Emacsのような巨大なものは厳しい。見上げるだけで首が疲れるよ。先人は偉大だね。
422 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 10:12:37.98 ID:jmx2rYXI.net] >>400 写真が趣味だから、Jpegのカラー画像をモノクロやセピアに変換するツール作りたくてHackage漁ったら使い易そうなのがCライブラリ使ってるんで、そう言うの入れやすいLinux導入。 暇があったらチマチマ作りたいけど、暇がない。。。
423 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 11:12:04.61 ID:TCAyfaNB.net] itchynyタソがcamを作った時、一部の画像ファイルが(ライブラリのせいで)読めないのに腹を立てて だったらhaskellで書いてやると一念発起したのがcamh。いまでも活躍してます。 lesspipeに組み込むとか。ちなこれはimlib2を使ってるので大抵の画像は読める。
424 名前:デフォルトの名無しさん [2017/05/09(火) 22:12:03.59 ID:PrpfKmLN.net] haskellを業務でつかうような仕事に転職すればOK
425 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 22:21:49.15 ID:kDNeTnk7.net] 仕事では使わんが、概念というかエッセンスはめっちゃ役に立ってるな 興味本位で触っといて良かったとマジ思う
426 名前:デフォルトの名無しさん mailto:age [2017/05/09(火) 22:47:25.87 ID:1T1N541v.net] >>419 その手の話ここで時々聞くけど、Haskellの何が何にどう役だったのか、 具体的な話を聞いたことが一度もない。 $$$な状況でHaskell未経験のヤツは***だったけど、経験者の俺は###できた、とか。 そういう事を具体的に語ったブログとか無いんかな? 英語でも構わないんだけど。
427 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 23:13:21.51 ID:0m9lmeXL.net] 比較するなら同一のものに対して、Haskell でのアプローチと その他のアプローチをする必要があるので、 そんな贅沢な時間の使い方するやつはユーザ数が多くないと現れないんじゃないかな?
428 名前:デフォルトの名無しさん [2017/05/09(火) 23:21:27.66 ID:PrpfKmLN.net] tanakhにhaskellやっててよかった話を要求するか
429 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 23:24:21.68 ID:xmCSMJsq.net] C++やC99以降みたいな「どこでも変数宣言」を嫌うようになった 宣言した位置と使う位置が離れるのは書き方が悪いからだ、というかなんか
430 名前:デフォルトの名無しさん mailto:sage [2017/05/10(水) 00:12:52.35 ID:HNykyFkL.net] 高階関数を多用する様になったとか、関数の純粋さを気にして関数分割する様になったとか 設計やコードが以前より分かりやすくなってテストもしやすくなったと思う カリー化や部分適用がもっと簡単に出来たらってモヤモヤする事も多いけど
431 名前:デフォルトの名無しさん mailto:sage [2017/05/10(水) 02:17:13.25 ID:k+Fw34TB.net] 別に関数型プログラミングって今まで出来なかったことが出来るようになる手法じゃないしな コードを直感的に書けるようにすることでプログラムの全体的な質を高める手助けをしてくれるような感じ メリットを語れと言われたら一晩中でも絡めちゃ語れる