関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
http://www.haskell.org/
前スレ
関数型プログラミング言語Haskell Part28
http://echo.2ch.net/test/read.cgi/tech/1428597032/
探検
関数型プログラミング言語Haskell Part30 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/01/15(日) 23:43:54.28ID:Vh4eztBk
322デフォルトの名無しさん
2017/04/28(金) 02:15:20.57ID:smx773DP >>321
純粋関数型データ構造
https://www.amazon.co.jp/dp/4048930567
"Purely Functional Data Structures" の邦訳『純粋関数型データ構造』が発売されます
http://d.hatena.ne.jp/ku-ma-me/20170316/p1
関数型言語での最適を考える:純粋関数型データ構造、Chris Okasaki
http://www.injpok.tokyo/4048930567-functional-data-structure
Edison
http://rwd.rdockins.name/edison/home/
>Edison is a library of purely function data structures
>for Haskell originally written by Chris Okasaki.
純粋関数型データ構造
https://www.amazon.co.jp/dp/4048930567
"Purely Functional Data Structures" の邦訳『純粋関数型データ構造』が発売されます
http://d.hatena.ne.jp/ku-ma-me/20170316/p1
関数型言語での最適を考える:純粋関数型データ構造、Chris Okasaki
http://www.injpok.tokyo/4048930567-functional-data-structure
Edison
http://rwd.rdockins.name/edison/home/
>Edison is a library of purely function data structures
>for Haskell originally written by Chris Okasaki.
323デフォルトの名無しさん
2017/04/28(金) 03:02:15.51ID:1X+/xglb 関数型言語って pure が付くととたんにマニアックになるんだよなー
324デフォルトの名無しさん
2017/04/28(金) 09:01:31.72ID:tDcdNy+k それはオブジェクト指向も同じっしょ。
325デフォルトの名無しさん
2017/04/28(金) 09:57:15.79ID:1X+/xglb あ、ホントだ
でも純粋関数型言語って 1とか2とかの数値や、
true/falseのbool値すら関数(ラムダ式)として表現するやつとかあるよね
マニアックが極まってるというか
でも純粋関数型言語って 1とか2とかの数値や、
true/falseのbool値すら関数(ラムダ式)として表現するやつとかあるよね
マニアックが極まってるというか
326デフォルトの名無しさん
2017/04/28(金) 10:02:36.98ID:MOddalxm それは関数型言語なら純粋じゃ無くてもそうだが。。。
327デフォルトの名無しさん
2017/04/28(金) 13:28:31.27ID:1X+/xglb ごめん
15年以上前のうろ覚えのラムダ計算の知識しかないんだけど、
1 とかの基本型をチャーチ数のようなラムダ式で表す体系は
型なしラムダ計算でしかなりたたなくて、
型付きのラムダ計算は自然数などの基本型はラムダ式では表せないんじゃなかったっけ?
15年以上前のうろ覚えのラムダ計算の知識しかないんだけど、
1 とかの基本型をチャーチ数のようなラムダ式で表す体系は
型なしラムダ計算でしかなりたたなくて、
型付きのラムダ計算は自然数などの基本型はラムダ式では表せないんじゃなかったっけ?
328デフォルトの名無しさん
2017/04/28(金) 14:57:12.95ID:MOddalxm うーむ。。。
まず左結合のチャーチ数をどうやって右結合のラムダ式で表現するんだろう?とか、色々イメージが掴めん。。。
確かに整数型は整数としか計算出来ないけど、型変数とかだったらズルイかもだけど行けそう。
私もそんな話は昔読んだ気がするんだが。。。
詳しい人を待ちますかね。
チャーチ数そのものは代数的型で簡単に実現出来るけど、そう言うのじゃないんだよね?
まず左結合のチャーチ数をどうやって右結合のラムダ式で表現するんだろう?とか、色々イメージが掴めん。。。
確かに整数型は整数としか計算出来ないけど、型変数とかだったらズルイかもだけど行けそう。
私もそんな話は昔読んだ気がするんだが。。。
詳しい人を待ちますかね。
チャーチ数そのものは代数的型で簡単に実現出来るけど、そう言うのじゃないんだよね?
329デフォルトの名無しさん
2017/04/28(金) 19:46:38.88ID:G+dyZ5vN 適切な抽象化があれば値がどうやって表されるかなんてどうでもいいよ
330デフォルトの名無しさん
2017/04/28(金) 23:29:10.15ID:2Q0thsFc 関数言語得意なお前らlazy Kとかunlambdaとか得意そう
331デフォルトの名無しさん
2017/04/28(金) 23:38:48.37ID:2Q0thsFc 正直言ってこういうのサッパリ分からん
ラムダ計算で代数的データ型を表現する方法 - @syamino はてなダイアリー
http://d.hatena.ne.jp/syamino/20120524/p1
ラムダ計算で代数的データ型を表現する方法 - @syamino はてなダイアリー
http://d.hatena.ne.jp/syamino/20120524/p1
332デフォルトの名無しさん
2017/04/29(土) 07:20:37.24ID:dRkpt71/ もはやHaskell関係ないって言いたいところだけど
そう言えばチャーチエンコーディングってfoldr/buildそのものだな
そう言えばチャーチエンコーディングってfoldr/buildそのものだな
333デフォルトの名無しさん
2017/04/29(土) 09:08:18.51ID:/ij5EOcX アプリ作る話は一切出てこない
334デフォルトの名無しさん
2017/04/29(土) 10:11:28.20ID:nyANDfpK Jpegの何バイトめから何バイトがどんな情報とかの仕様教えてくれたら頑張ってみるよ。
テキストなら割と扱えるんだけど、バイナリはデータ構造知らんと何とも。。。
こう言うところでプログラマーになれんかった。
テキストなら割と扱えるんだけど、バイナリはデータ構造知らんと何とも。。。
こう言うところでプログラマーになれんかった。
335デフォルトの名無しさん
2017/04/29(土) 10:28:52.14ID:5gNjoiIm 圧縮なんてしない方がアプリを早く作れるよ
GUIも使わない方が早く作れる
それで素早く作ったアプリは原始的なので人に見せない
科学が発達すればするほど最先端に追いつくまでの時間は長くなる
GUIも使わない方が早く作れる
それで素早く作ったアプリは原始的なので人に見せない
科学が発達すればするほど最先端に追いつくまでの時間は長くなる
336デフォルトの名無しさん
2017/04/29(土) 10:38:06.28ID:y9k82SwL GUI使わないプログラム普段おまえら使うのか
いったい何をやっているんだ
科学計算は日常系でないからなしな
いったい何をやっているんだ
科学計算は日常系でないからなしな
337デフォルトの名無しさん
2017/04/29(土) 11:24:38.37ID:ml8UsgdM プログラムの世界でGUI依存なんて基本的に羞恥なんだが素人かな
338デフォルトの名無しさん
2017/04/29(土) 11:26:25.86ID:nyANDfpK おいらはプログラマーの道をすっぱり諦めたから、当時一番気に入ったHaskellの残留思念だけで書きこんでる。
写真がプログラミング以上に楽しいから、Jpeg弄れるライブラリあったら触ってもいいかな。
HaskellでGUIと言えば、MSがHaskell+WXでGUIのサンプルをpdf(英語)で公開してから、海外のHaskellerは軒並みWX使ってるっぽい。
おいらの時はRWHにgtk2hsが載ってたからそれにしたけど、MSのpdf読む限りWXのがコード短い。。。
RWH恨むぞ。。。
写真がプログラミング以上に楽しいから、Jpeg弄れるライブラリあったら触ってもいいかな。
HaskellでGUIと言えば、MSがHaskell+WXでGUIのサンプルをpdf(英語)で公開してから、海外のHaskellerは軒並みWX使ってるっぽい。
おいらの時はRWHにgtk2hsが載ってたからそれにしたけど、MSのpdf読む限りWXのがコード短い。。。
RWH恨むぞ。。。
339デフォルトの名無しさん
2017/04/29(土) 11:26:31.41ID:fkqPQF0T 素人に売りつけるソフトにGUIは不可欠
340デフォルトの名無しさん
2017/04/29(土) 13:06:45.39ID:dPKXkep6 アーキテクチャの話も一切出てこない
俺達は汎用プログラミング言語でいったい何をしているのか
俺達は汎用プログラミング言語でいったい何をしているのか
341デフォルトの名無しさん
2017/04/29(土) 15:22:04.96ID:nyANDfpK デザパタみたいなの?
パターンって程実践で使われてないだろ。
んー。。。
使ってた感触だと、割と行き当たりばったりからの仕様変更でも何とかなるのが関数型言語の強み?と思わなくも無い。
ちょっとの変更にも関数経由するから、自然と既存の関数使い回せないか考えるし、関数型言語もそう言う風に進化して行ってるように感じる。
某スレで話題になったキャットドアクラスも、変な縛りがなければ究極的には機能の組み合わせでドアが開くかどうかの問題なのだから、タプルに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...
パターンって程実践で使われてないだろ。
んー。。。
使ってた感触だと、割と行き当たりばったりからの仕様変更でも何とかなるのが関数型言語の強み?と思わなくも無い。
ちょっとの変更にも関数経由するから、自然と既存の関数使い回せないか考えるし、関数型言語もそう言う風に進化して行ってるように感じる。
某スレで話題になったキャットドアクラスも、変な縛りがなければ究極的には機能の組み合わせでドアが開くかどうかの問題なのだから、タプルに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...
342デフォルトの名無しさん
2017/04/29(土) 15:49:01.36ID:23KWF3U2 科学計算が日常じゃないってマジ?
343デフォルトの名無しさん
2017/04/29(土) 16:12:38.77ID:dPKXkep6 しかし多くの状態を楽に管理できなきゃ、
ゲームも商支援系ソフトもクリエイター系ソフトも何もまともに作れん
作れたとしても、後のメンテが辛くなるコードが出来上がる
向いているのは自身で状態を維持変化しなくてもいいような、
フィルターとしてモデリングできるものしかなくなる
たとえば linux の簡単なコマンドや web アプリ、FX自動取引システムくらいか
処理速度の問題は実用的にはほとんど気にならないレベルだと思うし、
メモリリークの問題はそれがHaskellだから諦めて、せいぜい気をつけろと言える
が、状態管理のしにくさは、これが解決すれば
爆発的にユーザーが増えそうなだけに、何か発明がほしいな
ゲームも商支援系ソフトもクリエイター系ソフトも何もまともに作れん
作れたとしても、後のメンテが辛くなるコードが出来上がる
向いているのは自身で状態を維持変化しなくてもいいような、
フィルターとしてモデリングできるものしかなくなる
たとえば linux の簡単なコマンドや web アプリ、FX自動取引システムくらいか
処理速度の問題は実用的にはほとんど気にならないレベルだと思うし、
メモリリークの問題はそれがHaskellだから諦めて、せいぜい気をつけろと言える
が、状態管理のしにくさは、これが解決すれば
爆発的にユーザーが増えそうなだけに、何か発明がほしいな
344デフォルトの名無しさん
2017/04/29(土) 20:54:16.08ID:5gNjoiIm 抽象的な状態遷移はできるでしょ
ただ具体的な現実の状態を忠実に再現しろと言われるとよくわからない
忠実さを競う意味がわからない
ただ具体的な現実の状態を忠実に再現しろと言われるとよくわからない
忠実さを競う意味がわからない
345デフォルトの名無しさん
2017/04/29(土) 22:50:14.03ID:nyANDfpK おはー。
そこよな。
IORefとかで状態管理出来るけど、それだとデフォルト引数とかある普通の言語の方が楽。
どっちかと言えばWebプログラミングみたいにHTMLやDBに状態持ってもらって、ここの項目をこう加工したいって時だけHaskell的なのが良いと思う。
奇しくもMVCとかMVVMのモデル。
キャットドア問題みたいなのは問題自体の使いどころが判らん。
おいらは問題を解決したいのであってクラスを作りたいんじゃ無い。
オブジェクト指向でなぜ作るのかって本のジャンケンを一対一から多人数に拡張みたいなのが問題として本質を突いてると思う。
本当の仕様変更って、一旦根本から考え直さないといけない事があって、解決したいのはそこだからね。
オブジェクト指向だと、結局一旦全部壊してクラスで表現して解決。
関数型言語だと一旦バラしてリストとか加えて使い回せるのは使い回す。
そこよな。
IORefとかで状態管理出来るけど、それだとデフォルト引数とかある普通の言語の方が楽。
どっちかと言えばWebプログラミングみたいにHTMLやDBに状態持ってもらって、ここの項目をこう加工したいって時だけHaskell的なのが良いと思う。
奇しくもMVCとかMVVMのモデル。
キャットドア問題みたいなのは問題自体の使いどころが判らん。
おいらは問題を解決したいのであってクラスを作りたいんじゃ無い。
オブジェクト指向でなぜ作るのかって本のジャンケンを一対一から多人数に拡張みたいなのが問題として本質を突いてると思う。
本当の仕様変更って、一旦根本から考え直さないといけない事があって、解決したいのはそこだからね。
オブジェクト指向だと、結局一旦全部壊してクラスで表現して解決。
関数型言語だと一旦バラしてリストとか加えて使い回せるのは使い回す。
346デフォルトの名無しさん
2017/04/30(日) 00:00:51.50ID:qmSAdND7 関数型を選択することで、あるレベル以上の密結合を完全に禁止できる??
347デフォルトの名無しさん
2017/04/30(日) 00:09:16.78ID:mJmGYhZX348デフォルトの名無しさん
2017/04/30(日) 00:24:21.53ID:SbBDypWI そんな大規模なの作った事ないけど、少なくともクラスみたいにデータと手続きが密接に関係してるものよりは使い回しが効くよ。
ただ、それは関数型言語だからって訳じゃないと思う。
Cがグローバル変数の問題解決して、ジェネリック(テンプレート)導入すればそれで済む。
Goが一番それに近いのかな?(でもジェネリック無いんだよな。。。)
関数型言語はグローバル変数が読み込み専用で、問題になり難いから解決し易かっただけ。
私は文法の美しさでHaskellに惚れてるだけで、Haskellが絶対の解では無いと思ってる。
手続き型にはデフォルト引数とか、メッセージ引数と言う、引数の数や順番を減らしたり入れ替えても問題無い仕組みがある。
それぞれのメリット/デメリットをうまく組み合わせれば良い。
ただ、それは関数型言語だからって訳じゃないと思う。
Cがグローバル変数の問題解決して、ジェネリック(テンプレート)導入すればそれで済む。
Goが一番それに近いのかな?(でもジェネリック無いんだよな。。。)
関数型言語はグローバル変数が読み込み専用で、問題になり難いから解決し易かっただけ。
私は文法の美しさでHaskellに惚れてるだけで、Haskellが絶対の解では無いと思ってる。
手続き型にはデフォルト引数とか、メッセージ引数と言う、引数の数や順番を減らしたり入れ替えても問題無い仕組みがある。
それぞれのメリット/デメリットをうまく組み合わせれば良い。
349デフォルトの名無しさん
2017/05/01(月) 08:17:07.40ID:L9owkeUM 正の整数が1万個格納されたリストAの中に偶数が2個以上あるか調べたいです
手続き型だとcount=0みたいな変数を用意してループを回してcountが2になったらループを打ち切るという形になると思うのですが、
haskellだとどう書けばいいでしょうか?
filterしてから数を数えることも考えたのですがそれだと2つ見つかってからも処理が続くので少し非効率的な気がしてます
初歩的な質問で申し訳ありませんがご教授いただければ幸いです
手続き型だとcount=0みたいな変数を用意してループを回してcountが2になったらループを打ち切るという形になると思うのですが、
haskellだとどう書けばいいでしょうか?
filterしてから数を数えることも考えたのですがそれだと2つ見つかってからも処理が続くので少し非効率的な気がしてます
初歩的な質問で申し訳ありませんがご教授いただければ幸いです
350デフォルトの名無しさん
2017/05/01(月) 09:22:52.54ID:muUl2D49351デフォルトの名無しさん
2017/05/01(月) 09:38:09.96ID:TrluKRLJ その手続き型でのカウンタ変数を蓄積引数にするだけ
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]
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]
352デフォルトの名無しさん
2017/05/01(月) 11:06:48.65ID:d2LalM1x353デフォルトの名無しさん
2017/05/01(月) 11:18:51.46ID:XSKy6kSK 遅延評価が必ずループを打ち切る保証はない
length (repeat ()) >= length [] --> ⊥
longer (repeat ()) [] --> True
longer [] _ = False
longer (_:a) (_:b) = longer a b
longer _ _ = True
length (repeat ()) >= length [] --> ⊥
longer (repeat ()) [] --> True
longer [] _ = False
longer (_:a) (_:b) = longer a b
longer _ _ = True
354デフォルトの名無しさん
2017/05/01(月) 11:46:14.32ID:y6q+iQAV 遅延評価だからtake 2で必ず評価止まるわ
355デフォルトの名無しさん
2017/05/01(月) 11:52:30.52ID:IaTjJD59 入力が無限でその中にevenがなけりゃtakeでも止まんないっしょ
356デフォルトの名無しさん
2017/05/01(月) 12:35:32.98ID:CeQn+bFS さすがにその指摘は意味ないと思うけど
357デフォルトの名無しさん
2017/05/01(月) 13:23:37.16ID:XSKy6kSK でも人間にとって無意味な手をコツコツ打って勝つ戦略って最近の人工知能がやりそうだ
358デフォルトの名無しさん
2017/05/01(月) 14:06:36.95ID:muUl2D49 >>355
そんな例だと遅延評価関係なく解決不可能だろう
そんな例だと遅延評価関係なく解決不可能だろう
359デフォルトの名無しさん
2017/05/01(月) 15:43:00.00ID:YV6k5aHw むしろ止まらないのが正常な振る舞いだと思うの
360デフォルトの名無しさん
2017/05/01(月) 17:46:12.38ID:QnncI6PA361デフォルトの名無しさん
2017/05/01(月) 23:03:54.91ID:PiVFXFTP 1まんこ
362デフォルトの名無しさん
2017/05/02(火) 01:06:52.67ID:98ZJhHZq 型でガッチガチに固めてコンパイルエラーで危険なコード通すの阻止してくる関数型言語の姿勢ってフールプルーフ?
363デフォルトの名無しさん
2017/05/02(火) 07:41:56.01ID:kHyZ6XSn >>360
草ァ!
草ァ!
364デフォルトの名無しさん
2017/05/02(火) 10:12:37.54ID:HGZvLmNR >>360
ゾイ!!!!!!!!!
ゾイ!!!!!!!!!
365デフォルトの名無しさん
2017/05/03(水) 16:56:36.78ID:8xTy/mbt ハスケルの発音はどこにイントネーションを置けばいいですか?
366デフォルトの名無しさん
2017/05/03(水) 17:08:16.15ID:j+V3ZaYg はぁすくぅ
367デフォルトの名無しさん
2017/05/03(水) 17:25:56.12ID:YQuBqP26 ハースニールと呼んであげて
368デフォルトの名無しさん
2017/05/03(水) 17:34:41.80ID:3CkyOJSn >>366
「haskell pronounce」でググれば簡単に
https://wiki.haskell.org/Pronunciation
に行き着く。
そうすれば、
https://mail.haskell.org/pipermail/haskell-cafe/2008-January/038756.html
に案内され、疑問が解消されるはずだ。
「haskell pronounce」でググれば簡単に
https://wiki.haskell.org/Pronunciation
に行き着く。
そうすれば、
https://mail.haskell.org/pipermail/haskell-cafe/2008-January/038756.html
に案内され、疑問が解消されるはずだ。
369デフォルトの名無しさん
2017/05/03(水) 19:23:38.05ID:evrxvkuv はあすこぅ
370デフォルトの名無しさん
2017/05/03(水) 23:04:12.27ID:1Ttf2z2u Cabal ケバール
371デフォルトの名無しさん
2017/05/03(水) 23:21:41.48ID:mJ/QVcTI ghcよりcabalより先にstackを入れる。
372デフォルトの名無しさん
2017/05/04(木) 00:29:46.99ID:M/Hnicnq YouTubeをhaskellで検索かけりゃいくらでも聞けるだろ
373デフォルトの名無しさん
2017/05/04(木) 03:31:51.49ID:gAUNCpWB haskellでキーボードから入力した値をそのまま出力する場合、必ず
n <- getLine
putStrLn n
のように一旦変数に束縛する必要がありますか?
一行では書けないのでしょうか
n <- getLine
putStrLn n
のように一旦変数に束縛する必要がありますか?
一行では書けないのでしょうか
374デフォルトの名無しさん
2017/05/04(木) 03:52:33.18ID:0GlJDnqX main = getLine >>= putStrLn
375デフォルトの名無しさん
2017/05/04(木) 03:55:26.58ID:gAUNCpWB >>374
ありがとうございます
ありがとうございます
376デフォルトの名無しさん
2017/05/04(木) 04:12:42.09ID:0GlJDnqX ちなみに
main = do
____n <- getLine
____puStrLn n
と
main = getLine >>= \n -> putStrLn n
と
main = getLine >>= putStrLn
は、等価。
do形式はモナド形式を手続き型っぽく見せる糖衣構文に過ぎない。
最後のはモナド形式とカリー化を利用した部分的用で見た目の変数を無くしただけ。
モナド形式だとプログラム全体が一つの式だと言うのが良く分かる。
main = do
____n <- getLine
____puStrLn n
と
main = getLine >>= \n -> putStrLn n
と
main = getLine >>= putStrLn
は、等価。
do形式はモナド形式を手続き型っぽく見せる糖衣構文に過ぎない。
最後のはモナド形式とカリー化を利用した部分的用で見た目の変数を無くしただけ。
モナド形式だとプログラム全体が一つの式だと言うのが良く分かる。
377デフォルトの名無しさん
2017/05/04(木) 05:28:10.40ID:DGL+h71J ___n は誤解を招く
_korehaTsukaimasen
_korehaTsukaimasen
378デフォルトの名無しさん
2017/05/04(木) 06:57:02.33ID:M/Hnicnq getLine >>= putStrLn じゃなくて interact はダメなん?
379デフォルトの名無しさん
2017/05/04(木) 12:19:44.49ID:xtfIuMNG そもそも、getLineは1行しか読まないしな
380デフォルトの名無しさん
2017/05/04(木) 14:29:46.30ID:gUFA1lSr381デフォルトの名無しさん
2017/05/04(木) 16:34:00.03ID:UGR/WMPx 束縛ってコード(人間の視認性)レベルの話で、コンパイラが吐くバイナリではキャンセルされてるんじゃないの?
バインドで(ポイントフリーみたいに)やったのと変わらないようになってんじゃないの
バインドで(ポイントフリーみたいに)やったのと変わらないようになってんじゃないの
382デフォルトの名無しさん
2017/05/05(金) 21:55:20.21ID:9ig94Wv/ Haskell 教養としての関数型プログラミング 単行本 ? 2017/4/15
重城良国 (著)
https://www.amazon.co.jp/dp/4798048062/
824ページって超大作だな
Haskell本の決定版か?
重城良国 (著)
https://www.amazon.co.jp/dp/4798048062/
824ページって超大作だな
Haskell本の決定版か?
383デフォルトの名無しさん
2017/05/05(金) 21:56:45.82ID:9ig94Wv/ Haskellによる関数プログラミングの思考法 単行本 ? 2017/2/28
Richard Bird (著), 山下伸夫 (翻訳)
https://www.amazon.co.jp/dp/4048930532/
こっちはどうなのだろう?
感想求む
Richard Bird (著), 山下伸夫 (翻訳)
https://www.amazon.co.jp/dp/4048930532/
こっちはどうなのだろう?
感想求む
384デフォルトの名無しさん
2017/05/05(金) 23:25:45.93ID:e6epJNrq385デフォルトの名無しさん
2017/05/05(金) 23:34:27.84ID:RNJ7gaAH すごい本やない。
すごい「H」本や。
すごい「H」本や。
386デフォルトの名無しさん
2017/05/05(金) 23:53:12.22ID:fZIf3DTG 初めてのCっぽくて好き
387デフォルトの名無しさん
2017/05/06(土) 00:17:40.31ID:gZLP5YIG getLineでコンソールから手動入力する時、バックスペースとかで修正出来ないのってhaskeline使う以外に何か方法無いのかな?
388デフォルトの名無しさん
2017/05/06(土) 00:28:11.74ID:MHgXx5Es rlwrapとか?
389デフォルトの名無しさん
2017/05/06(土) 02:13:17.67ID:gZLP5YIG うーん、そういうのじゃないな
390デフォルトの名無しさん
2017/05/06(土) 18:51:05.79ID:smzwp1ku Comonadでオブジェクト指向を実現できるって聞いたけどほんと?
391デフォルトの名無しさん
2017/05/06(土) 23:14:55.28ID:6S4yhtdG スレ違いかもしれませんが、2つのリストに一致する項目だけ抜き出したリストを作るみたいな問題があったとき、
集合論だと集合Aと集合Bの積集合A∩Bを求めるような解き方をすると思うのですが、Haskellのようにラムダ計算が
基になっている関数型言語だとそもそもの考え方や物の見方が違ったりするのでしょうか?
Haskellを学び始めたはいいんですが、結局他言語のパラダイムを無理やりHaskellに適用させているだけのような気がして不安です
集合論だと集合Aと集合Bの積集合A∩Bを求めるような解き方をすると思うのですが、Haskellのようにラムダ計算が
基になっている関数型言語だとそもそもの考え方や物の見方が違ったりするのでしょうか?
Haskellを学び始めたはいいんですが、結局他言語のパラダイムを無理やりHaskellに適用させているだけのような気がして不安です
392デフォルトの名無しさん
2017/05/07(日) 01:09:26.23ID:875uFfQS >>391
質問に答えるだけの知識を持ち合わせていないので一応コードだけ
intersect :: Eq a => [a] -> [a] -> [a]
intersect xs = filter (`elem` xs)
リスト内包表現でも書けるけど関数型っぽいのはこういう書き方なのかも
質問に答えるだけの知識を持ち合わせていないので一応コードだけ
intersect :: Eq a => [a] -> [a] -> [a]
intersect xs = filter (`elem` xs)
リスト内包表現でも書けるけど関数型っぽいのはこういう書き方なのかも
393デフォルトの名無しさん
2017/05/07(日) 01:46:15.37ID:s5HwRSgU394デフォルトの名無しさん
2017/05/07(日) 02:07:21.95ID:J1yK9zIW395デフォルトの名無しさん
2017/05/07(日) 13:16:11.57ID:J1yK9zIW396デフォルトの名無しさん
2017/05/07(日) 16:32:45.84ID:YN83nmbH リスト内包表記は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と同じような最適化が行われるし
必要なければリストの結合も行われない
[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と同じような最適化が行われるし
必要なければリストの結合も行われない
397デフォルトの名無しさん
2017/05/07(日) 16:37:16.65ID:f0nSghKy リスト内包のほうがパフォーマンスでるらしいけどHaskellのパフォーマンスチューンングは難しいから当分気にしないほうがいい
待ってる間に線形型で楽々チューニングできるようになるかもしれないし
待ってる間に線形型で楽々チューニングできるようになるかもしれないし
398デフォルトの名無しさん
2017/05/07(日) 16:58:43.74ID:3IJNEy2Z399デフォルトの名無しさん
2017/05/07(日) 17:18:00.54ID:m17h7+4k 内包表記と再帰を組み合わせることも可能。
夢が広がりング。
夢が広がりング。
400デフォルトの名無しさん
2017/05/07(日) 22:35:33.72ID:t8zqh9+K Web系でもいいのですが、フリーウェア(できればオープンソース)のアプリケーションで、
Haskellで作られたものって何かありますか?
Haskellプログラマだけでなく、一般の人も使っているもので。
もしくは、みなさんならHaskellでどんなアプリケーションを作ってみたいですか?
Haskellで作られたものって何かありますか?
Haskellプログラマだけでなく、一般の人も使っているもので。
もしくは、みなさんならHaskellでどんなアプリケーションを作ってみたいですか?
401デフォルトの名無しさん
2017/05/07(日) 22:48:03.22ID:ESaiO+gS Pandocあたりは比較的広く使われている印象
402デフォルトの名無しさん
2017/05/07(日) 23:26:23.39ID:xgXJ2OQ8 あとはShellCheckだな。bash初心者はとにかくこれ使えって話題のシェルスクリプト更正ツールだ。
403デフォルトの名無しさん
2017/05/08(月) 00:31:05.17ID:XyXCIute オーケーグーグル
Haskellで日本語文字列(Shift-JISやEUC-JP)のファイルを正しく処理する方法
Haskellで日本語文字列(Shift-JISやEUC-JP)のファイルを正しく処理する方法
404デフォルトの名無しさん
2017/05/08(月) 17:26:21.06ID:kaDHepSW みんな夢がないね。
ぼくなんてHaskellプログラム一つでお城のような家が建てれたよ。
ぼくなんてHaskellプログラム一つでお城のような家が建てれたよ。
405デフォルトの名無しさん
2017/05/08(月) 22:42:37.72ID:0FON9WNL406デフォルトの名無しさん
2017/05/08(月) 22:56:09.94ID:9wTmIyqX GitHubとかでHaskellで検索かけりゃ何か出てくるんじゃねーの?
407デフォルトの名無しさん
2017/05/08(月) 23:03:23.31ID:a/GZsbco 論理に基づく人工知能を作るならHaskellがぴったりじゃないかと思うんだけど、プログラミングの技能も論理学の知識もないから作れない
細々と勉強はしてるけど
細々と勉強はしてるけど
408デフォルトの名無しさん
2017/05/08(月) 23:31:16.69ID:Vtk8jBj4 自動イタ電器とか作れや
409デフォルトの名無しさん
2017/05/08(月) 23:32:41.17ID:9whwcEDU 達人プログラマーになりたい欲求はあるけど何かを作りたいっていう欲求は薄いわ
410デフォルトの名無しさん
2017/05/08(月) 23:43:37.38ID:iNFmh6sq やはりゲームだな。あとはGUIアプリ。なにかのエディタのようなものがいいな。
Haskellで複雑な状態を扱うのは困難、と言ってる人らに反論したい。
実際のところはどうなのか想像する前に、まずはそういう状況に直面する必要がある。
Haskellで複雑な状態を扱うのは困難、と言ってる人らに反論したい。
実際のところはどうなのか想像する前に、まずはそういう状況に直面する必要がある。
411デフォルトの名無しさん
2017/05/08(月) 23:49:55.75ID:iNFmh6sq EmacsのプラグインもHaskellで書きたい。正格データと遅延データを色分けして表示できたら嬉しそうだ。
GHC API を使えばできるかもしれない。
なんにしてもHaskellでやりたい。俺はもうLispは嫌だ…
GHC API を使えばできるかもしれない。
なんにしてもHaskellでやりたい。俺はもうLispは嫌だ…
412デフォルトの名無しさん
2017/05/08(月) 23:59:34.03ID:0FON9WNL >>409
どういうことですか?
私が知っている達人プログラマ、要するにハッカーですが、
彼らはみな何かを作ってました(ます)。
なので、作ることに関心が無い達人プログラマというのが想像しにくいのですが。
あ、競技プログラミングのトッププレーヤーとかですか?
どういうことですか?
私が知っている達人プログラマ、要するにハッカーですが、
彼らはみな何かを作ってました(ます)。
なので、作ることに関心が無い達人プログラマというのが想像しにくいのですが。
あ、競技プログラミングのトッププレーヤーとかですか?
413デフォルトの名無しさん
2017/05/09(火) 00:07:55.03ID:CfiI0NLl414デフォルトの名無しさん
2017/05/09(火) 00:12:52.22ID:PrpfKmLN 作る以外に改造とかに気合入れる人とかもいるんじゃね?
415デフォルトの名無しさん
2017/05/09(火) 00:50:22.97ID:j9MX7/aM >>413
今は外部言語でかけるしくみがあるから、エディタそのものを置き換えなくてもいいんだ。
それが現実的だと思う。Emacsのような巨大なものは厳しい。見上げるだけで首が疲れるよ。先人は偉大だね。
今は外部言語でかけるしくみがあるから、エディタそのものを置き換えなくてもいいんだ。
それが現実的だと思う。Emacsのような巨大なものは厳しい。見上げるだけで首が疲れるよ。先人は偉大だね。
416デフォルトの名無しさん
2017/05/09(火) 10:12:37.98ID:jmx2rYXI >>400
写真が趣味だから、Jpegのカラー画像をモノクロやセピアに変換するツール作りたくてHackage漁ったら使い易そうなのがCライブラリ使ってるんで、そう言うの入れやすいLinux導入。
暇があったらチマチマ作りたいけど、暇がない。。。
写真が趣味だから、Jpegのカラー画像をモノクロやセピアに変換するツール作りたくてHackage漁ったら使い易そうなのがCライブラリ使ってるんで、そう言うの入れやすいLinux導入。
暇があったらチマチマ作りたいけど、暇がない。。。
417デフォルトの名無しさん
2017/05/09(火) 11:12:04.61ID:TCAyfaNB itchynyタソがcamを作った時、一部の画像ファイルが(ライブラリのせいで)読めないのに腹を立てて
だったらhaskellで書いてやると一念発起したのがcamh。いまでも活躍してます。
lesspipeに組み込むとか。ちなこれはimlib2を使ってるので大抵の画像は読める。
だったらhaskellで書いてやると一念発起したのがcamh。いまでも活躍してます。
lesspipeに組み込むとか。ちなこれはimlib2を使ってるので大抵の画像は読める。
418デフォルトの名無しさん
2017/05/09(火) 22:12:03.59ID:PrpfKmLN haskellを業務でつかうような仕事に転職すればOK
419デフォルトの名無しさん
2017/05/09(火) 22:21:49.15ID:kDNeTnk7 仕事では使わんが、概念というかエッセンスはめっちゃ役に立ってるな
興味本位で触っといて良かったとマジ思う
興味本位で触っといて良かったとマジ思う
420デフォルトの名無しさん
2017/05/09(火) 22:47:25.87ID:1T1N541v >>419
その手の話ここで時々聞くけど、Haskellの何が何にどう役だったのか、
具体的な話を聞いたことが一度もない。
$$$な状況でHaskell未経験のヤツは***だったけど、経験者の俺は###できた、とか。
そういう事を具体的に語ったブログとか無いんかな?
英語でも構わないんだけど。
その手の話ここで時々聞くけど、Haskellの何が何にどう役だったのか、
具体的な話を聞いたことが一度もない。
$$$な状況でHaskell未経験のヤツは***だったけど、経験者の俺は###できた、とか。
そういう事を具体的に語ったブログとか無いんかな?
英語でも構わないんだけど。
421デフォルトの名無しさん
2017/05/09(火) 23:13:21.51ID:0m9lmeXL 比較するなら同一のものに対して、Haskell でのアプローチと
その他のアプローチをする必要があるので、
そんな贅沢な時間の使い方するやつはユーザ数が多くないと現れないんじゃないかな?
その他のアプローチをする必要があるので、
そんな贅沢な時間の使い方するやつはユーザ数が多くないと現れないんじゃないかな?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★5 [BFU★]
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- 【北海道】帯広vs釧路 不良グループが30人規模の大乱闘 廃墟での肝試しで鉢合わせトラブルに…自称解体工の男ら逮捕 [ぐれ★]
- 【福岡】ミカンの木に逆さ吊りになっていた高齢の男性が死亡 [雑用縞工作★]
- 【高市速報】日本の政治家も国民も「実利を取る」って選択ができないバカしかいないのか? [369521721]
- 東大名誉教授「中国は誤った宣伝を繰り広げ、対立を煽り、経済の失敗による国内の不満を日本に向けている」 [903292576]
- 【悲報】Suica、セキュリティを突破されたのが販売されはじめる [347751896]
- 【悲報】米問屋「助けて!米がとんでもない量余ってるのに全然売れないの!でも絶対値下げしたくない…どうしたらいいの…」 [802034645]
- ネトウヨ「日本人の命を守るために中国とケンカしろ!え、薬が作れない?じゃあ死ね!」 こいつらの言う安全保障とはいったい何なのか? [314039747]
- 🏡
