関数型プログラミング言語 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
256デフォルトの名無しさん
2017/04/07(金) 21:44:12.76ID:aTgPduXz 基礎ライブラリは抽象的なので、そこから応用的具象化を想像する能力が足りない
初めてApplicativeのドキュメントを読んでその有用性に気付く奴はIQ高過ぎだろ
頭がpureだった俺は戦意喪失したものだよ
初めてApplicativeのドキュメントを読んでその有用性に気付く奴はIQ高過ぎだろ
頭がpureだった俺は戦意喪失したものだよ
257デフォルトの名無しさん
2017/04/07(金) 21:57:17.10ID:oAg/9XNg 誰かHaskellで萌える関数型プログラミング入門書いてくれ。
258デフォルトの名無しさん
2017/04/07(金) 22:45:53.56ID:961Byv/H259デフォルトの名無しさん
2017/04/07(金) 23:09:24.70ID:lfhJbqMl >>255
ライブラリドキュメントを眺めていて、どんな使い方ができるんだろと想像するのは、そりゃ難しいよ。
それはドキュメントの使い方を間違っていると思う。
俺はアプリケーションを作っている時、
1. こういう引数からこういう結果になる関数が欲しい
2. 1の計算を分解すると A、B、C という計算の組み合わせになりそうだ
3. A、B、C を計算する関数をすでに誰か作っていないだろうか?
という順に考えて、A、B、C をドキュメントから探す、という使い方をしてる。
*> の例なら、誰かがパーサーで認識だけして捨てるのに使っているのを見てアハ体験をするのではない。
そうじゃなくて、初めにパーサーを作っていて認識だけして捨てたいという欲求が湧いてきて、
じゃあどうするかと考えた時に、まず「認識だけして捨てる」とはどういう計算なのかを分析する。
そうして事の本質を捉えてからドキュメントから求めるものを探す。
その時、たまたま既にパーサーの構造を Applicative で表現していれば、
ドキュメントの Control.Applicative モジュールの項を真っ先に探して *> を見つけるだろうし、
別の方法で実装していれば、実現する関数はライブラリには無さそうだなと諦めて自作するかも知れない。
何れにしてもアハ体験の出番はない。
言っておくが、アハ体験が悪いわけではないぞ。
他人の解説やソースコードを見て、そういう使い方もできるのかと学ぶ事は大事だ。
ただ、ドキュメントをそのように使うのは違うだろ、つまり(ライブラリ)ドキュメントは
解説書でも読み物でもないだろ、と言いたいんだ。
ライブラリドキュメントを眺めていて、どんな使い方ができるんだろと想像するのは、そりゃ難しいよ。
それはドキュメントの使い方を間違っていると思う。
俺はアプリケーションを作っている時、
1. こういう引数からこういう結果になる関数が欲しい
2. 1の計算を分解すると A、B、C という計算の組み合わせになりそうだ
3. A、B、C を計算する関数をすでに誰か作っていないだろうか?
という順に考えて、A、B、C をドキュメントから探す、という使い方をしてる。
*> の例なら、誰かがパーサーで認識だけして捨てるのに使っているのを見てアハ体験をするのではない。
そうじゃなくて、初めにパーサーを作っていて認識だけして捨てたいという欲求が湧いてきて、
じゃあどうするかと考えた時に、まず「認識だけして捨てる」とはどういう計算なのかを分析する。
そうして事の本質を捉えてからドキュメントから求めるものを探す。
その時、たまたま既にパーサーの構造を Applicative で表現していれば、
ドキュメントの Control.Applicative モジュールの項を真っ先に探して *> を見つけるだろうし、
別の方法で実装していれば、実現する関数はライブラリには無さそうだなと諦めて自作するかも知れない。
何れにしてもアハ体験の出番はない。
言っておくが、アハ体験が悪いわけではないぞ。
他人の解説やソースコードを見て、そういう使い方もできるのかと学ぶ事は大事だ。
ただ、ドキュメントをそのように使うのは違うだろ、つまり(ライブラリ)ドキュメントは
解説書でも読み物でもないだろ、と言いたいんだ。
260デフォルトの名無しさん
2017/04/07(金) 23:36:42.37ID:+bl73oc8 本来であれば入門編は有用性ではなく単相型の欠陥に気付かせるべきなんだよ
VectorInt型とかVectorChar型とか再発明を繰り返すループに気付け
その後でパラメータ多相編とアドホック多相編をやるべき
VectorInt型とかVectorChar型とか再発明を繰り返すループに気付け
その後でパラメータ多相編とアドホック多相編をやるべき
261デフォルトの名無しさん
2017/04/08(土) 01:14:10.72ID:7QsPN9bB >>258
買う買う。
買う買う。
262デフォルトの名無しさん
2017/04/08(土) 20:59:41.01ID:gcfXcmks >>258
かうぞー!
かうぞー!
263デフォルトの名無しさん
2017/04/09(日) 00:41:02.14ID:jUVd4dkj 萌は興味を引かせる手段にはなれても、理解を深める手段にはなれんよ
264デフォルトの名無しさん
2017/04/09(日) 01:31:48.04ID:cVuKvPJL Kindleで、標準ライブラリの一つにつき一冊かけて特集した本を電子書籍で出して
抽象的な基礎ライブラリはその応用可能性をねっとりと絡み付くまでに例示して
抽象的な基礎ライブラリはその応用可能性をねっとりと絡み付くまでに例示して
265デフォルトの名無しさん
2017/04/09(日) 01:36:18.18ID:xs3hgIsU いいっすね読んでみたい
GitBookあたりで無料で
GitBookあたりで無料で
266デフォルトの名無しさん
2017/04/09(日) 06:15:21.14ID:bWQLB/aV HaskellはHOW TO本が少な過ぎる
写経するだけでサクッと実用アプリを作れるような本が欲しいよね
IOが七章や八章から登場する入門書とか
Haskellを普及させる気ねぇだろw
写経するだけでサクッと実用アプリを作れるような本が欲しいよね
IOが七章や八章から登場する入門書とか
Haskellを普及させる気ねぇだろw
267デフォルトの名無しさん
2017/04/09(日) 11:16:11.13ID:6mlbYxYb >>266
他言語でもそんな本は無いんじゃないか?
「サクッと」と「実用」がどんなレベルか知らんけど。
一応 Beginning Haskell が Web 系で実用的で、
入門者がアプリケーションを作るまでを指導してくれるが、洋書だ。
他言語でもそんな本は無いんじゃないか?
「サクッと」と「実用」がどんなレベルか知らんけど。
一応 Beginning Haskell が Web 系で実用的で、
入門者がアプリケーションを作るまでを指導してくれるが、洋書だ。
268デフォルトの名無しさん
2017/04/09(日) 13:25:40.09ID:k7pBYoHG Pythonなんかは
サンプルコードを書き書きしてるだけで
機械学習が出来ちゃう本なんかが出てるね
サンプルコードを書き書きしてるだけで
機械学習が出来ちゃう本なんかが出てるね
269デフォルトの名無しさん
2017/04/09(日) 14:32:15.66ID:h7Zssp3Z Haskellでエロイベント満載の
エロゲーを作る入門書が欲しい
エロゲーを作る入門書が欲しい
270デフォルトの名無しさん
2017/04/09(日) 22:07:49.23ID:iyanZMWu Haskellってゲーム創るのに向いてるの?
271デフォルトの名無しさん
2017/04/10(月) 00:42:05.83ID:6CfyD+kA エロゲー作るのに大事なのはエロ絵だけ、プログラミング言語なんて全く関係ない
272デフォルトの名無しさん
2017/04/10(月) 01:04:16.20ID:rMcgJXKg 圧縮した画像を取り出したりするのはC言語だと思う
他の言語を混ぜても、小規模ならC言語の占める割合が高い
だから他の言語はスケーラビリティがーと言って大規模化しようとする
他の言語を混ぜても、小規模ならC言語の占める割合が高い
だから他の言語はスケーラビリティがーと言って大規模化しようとする
273デフォルトの名無しさん
2017/04/10(月) 02:02:19.00ID:U7/Um2af C言語開発はストレスで禿げるから嫌だ
居玉で横歩取りするような将棋は嫌だ
居玉で横歩取りするような将棋は嫌だ
274デフォルトの名無しさん
2017/04/10(月) 03:00:41.47ID:IhGuSZfb >>270
モナディウスあるから作れないことはないけど、C/C++のが向いてる。
Haskellに限らずJavaやC#みたいなGC使ってるのはタイミングがシビアなゲームには向かない。
(やるとしても場面切り替えのタイミングまでGC止めたりと、工夫が必要)
シビアじゃないゲームならUnityの公式言語だったり、PS VitaのSDKもC#だし、ゲームプラットフォームの選択肢多いC#じゃね?
モナディウスあるから作れないことはないけど、C/C++のが向いてる。
Haskellに限らずJavaやC#みたいなGC使ってるのはタイミングがシビアなゲームには向かない。
(やるとしても場面切り替えのタイミングまでGC止めたりと、工夫が必要)
シビアじゃないゲームならUnityの公式言語だったり、PS VitaのSDKもC#だし、ゲームプラットフォームの選択肢多いC#じゃね?
275デフォルトの名無しさん
2017/04/10(月) 03:05:43.30ID:Zvy/cqZx とはいえ今時ゲームというばスマホだから
スマホ対応の難しい言語は論外だろうな
スマホ対応の難しい言語は論外だろうな
276デフォルトの名無しさん
2017/04/10(月) 03:14:10.80ID:IhGuSZfb ゲームとは言わんが、Haskellでスマフォアプリ作れたらなぁ。。。
Webアプリを作って、URLをスマフォの画面に置くのが関の山だろう。
Yesod本の和訳早よ。
Webアプリを作って、URLをスマフォの画面に置くのが関の山だろう。
Yesod本の和訳早よ。
277デフォルトの名無しさん
2017/04/10(月) 03:52:14.23ID:mPsedSNt 同系統の言語のCleanはIDEに標準で付いてくるサンプルに
2D横スクロールアクションみたいなゲームとかTCPとかあるから
そっち使うとかは?
2D横スクロールアクションみたいなゲームとかTCPとかあるから
そっち使うとかは?
278デフォルトの名無しさん
2017/04/10(月) 03:58:17.94ID:U7/Um2af Androidで動くHaskellの話はどうなったの?
279デフォルトの名無しさん
2017/04/10(月) 05:18:31.19ID:t1irNdwQ どの言語でも無理矢理Androidで動かす狂人はいるけど
実用性はというと・・・お察しください
実用性はというと・・・お察しください
280デフォルトの名無しさん
2017/04/10(月) 08:42:46.72ID:qzcpQwFo >>271
声優だって大事
声優だって大事
281デフォルトの名無しさん
2017/04/10(月) 11:21:56.58ID:QIjIFLSF purescriptとりあえず入れてみたけど、コンパイラしかないのな
282デフォルトの名無しさん
2017/04/10(月) 21:28:48.23ID:490JO927 arrayの要素数を型に含めることはできないの?
それがあれば、行列の積とかで便利だと思うんだけど
オレ頭が悪いんで言っている意味が分からないかな…
それがあれば、行列の積とかで便利だと思うんだけど
オレ頭が悪いんで言っている意味が分からないかな…
283デフォルトの名無しさん
2017/04/10(月) 21:55:22.44ID:CykROrgz Dependent Typeで検索
284デフォルトの名無しさん
2017/04/10(月) 23:31:00.56ID:hsDcS7Wy JVMで動くHaskellことFregeは最近どうなっているのか
285デフォルトの名無しさん
2017/04/11(火) 00:12:08.28ID:jIIzMyke Haskell風AltJSのベンチマーク - Qiita
http://qiita.com/philopon/items/1451f6b8c5ccec41479d
ブラウザゲーム作るにはまだまだなのかな
http://qiita.com/philopon/items/1451f6b8c5ccec41479d
ブラウザゲーム作るにはまだまだなのかな
286デフォルトの名無しさん
2017/04/11(火) 00:13:19.38ID:rtc8M2j0287デフォルトの名無しさん
2017/04/11(火) 00:40:49.07ID:ErICxElM 仮想機械上にランタイムシステムを敷いて、さらにその上で動かすの?
……遅そう
……遅そう
288デフォルトの名無しさん
2017/04/12(水) 23:48:48.59ID:BfJ17y0b289デフォルトの名無しさん
2017/04/12(水) 23:59:29.26ID:QF962/+T >>288
それはHaskellプログラマに特有の能力じゃないし、
他言語のプログラマよりも特に優れている訳でもないから、
Haskell本に求めても無駄。
強いて挙げれば「珠玉のアルゴリズムデザイン」。
でも、もっと他の本を読んで実践した方がいい。
例えば「いかにして問題を解くか」シリーズ。
それはHaskellプログラマに特有の能力じゃないし、
他言語のプログラマよりも特に優れている訳でもないから、
Haskell本に求めても無駄。
強いて挙げれば「珠玉のアルゴリズムデザイン」。
でも、もっと他の本を読んで実践した方がいい。
例えば「いかにして問題を解くか」シリーズ。
290デフォルトの名無しさん
2017/04/13(木) 00:17:54.59ID:tWZEhHcW Haskellは数学だから基本は数学本に丸投げだよな
しかしλとか∀とか真面目に説明した数学本は見たことがない
しかしλとか∀とか真面目に説明した数学本は見たことがない
291デフォルトの名無しさん
2017/04/13(木) 02:17:21.29ID:jvdUllVk >>290
知らんだけだな
知らんだけだな
292デフォルトの名無しさん
2017/04/13(木) 02:32:00.36ID:WRWoTzYv 数学の裏付けで支えられてる言語って安心感ある
誰しも学習に費やした時間を反故にしたくないのだ
つぶしが利く共通項目を辿って成長していきたい
誰しも学習に費やした時間を反故にしたくないのだ
つぶしが利く共通項目を辿って成長していきたい
293デフォルトの名無しさん
2017/04/13(木) 06:59:19.11ID:m/ZfxtWH >>288
むしろそれはプログラマに必須の能力。
Haskellは普通の言語でそれが見えない人にも見える様にしてくれる。
(普通の言語ではプログラマになれなかった人でもプログラマになれるかも知れない言語)
本としてはHaskell本じゃ無いが、プログラミングinOcamlが良かった。
その後にプログラミングHaskell読むと良い。
どうしてもモナド理解したかったらすごいH本も読む。
CやJavaでマージソートのコード読んでも何やってるのか分からんかったが、Haskellだと初心者向けのアルゴリズム本で、マージソートとはこう言う動きをするソートって図解を読んで、自分で書けた。
今にして思えば、他の言語のアルゴリズム本はソートがリスト前提なのに配列でいきなり作るから分かりにくいって気付いたが。
リストで作って、遅いから配列にしたい。
どう書く?みたいな書き方なら他の言語でも分かりやすいのに。
むしろそれはプログラマに必須の能力。
Haskellは普通の言語でそれが見えない人にも見える様にしてくれる。
(普通の言語ではプログラマになれなかった人でもプログラマになれるかも知れない言語)
本としてはHaskell本じゃ無いが、プログラミングinOcamlが良かった。
その後にプログラミングHaskell読むと良い。
どうしてもモナド理解したかったらすごいH本も読む。
CやJavaでマージソートのコード読んでも何やってるのか分からんかったが、Haskellだと初心者向けのアルゴリズム本で、マージソートとはこう言う動きをするソートって図解を読んで、自分で書けた。
今にして思えば、他の言語のアルゴリズム本はソートがリスト前提なのに配列でいきなり作るから分かりにくいって気付いたが。
リストで作って、遅いから配列にしたい。
どう書く?みたいな書き方なら他の言語でも分かりやすいのに。
294デフォルトの名無しさん
2017/04/13(木) 11:10:39.92ID:tWZEhHcW295デフォルトの名無しさん
2017/04/15(土) 17:32:06.76ID:JvKdzHxp 数学の分からん馬鹿の多い板だな
>>293
C/Java のソートはインプレイスであることが優先されるからね
C/Java のソートはインプレイスであることが優先されるからね
297デフォルトの名無しさん
2017/04/18(火) 05:20:40.72ID:MjkxKRKp キャッチコピーすごいw
Haskellの美しさを
知っている人は、
人生に絶望することはない。
Haskellで世界を変えたい。
http://www.shuwasystem.co.jp/products/7980img/4806/a.jpg
Haskellの美しさを
知っている人は、
人生に絶望することはない。
Haskellで世界を変えたい。
http://www.shuwasystem.co.jp/products/7980img/4806/a.jpg
298デフォルトの名無しさん
2017/04/18(火) 05:48:02.94ID:xmEJeblZ Haskellを学ぶことによりC++の凄さを知りました
299デフォルトの名無しさん
2017/04/18(火) 08:09:34.88ID:aKjw+TWL ちょっとオカルトチックにするのやめて
またHaskell馬鹿にされるじゃん
またHaskell馬鹿にされるじゃん
300デフォルトの名無しさん
2017/04/18(火) 09:21:24.08ID:YlfHEX7H その本めくってみたけど基本的な言語機能を延々噛み砕いて説明してるだけのバカが崇めるためにあるような本だった
インテリアに最適
インテリアに最適
301デフォルトの名無しさん
2017/04/18(火) 09:45:04.79ID:zekwtXkL プログラミング言語を国家か何かのように考えてるやつはみんなオカルト
それをやめさせることができたらノーベル平和賞を取れる
それをやめさせることができたらノーベル平和賞を取れる
302デフォルトの名無しさん
2017/04/18(火) 10:44:46.76ID:aKjw+TWL Haskellは単なる科学であり魔術でも宗教でもない。余計な飾りは要らない。ただただ成果を出せばよい
というわけでHaskellの成果を挙げて
というわけでHaskellの成果を挙げて
303デフォルトの名無しさん
2017/04/18(火) 18:17:01.21ID:cdFptP3+ >>302
> Haskellは単なる科学であり魔術でも宗教でもない。余計な飾りは要らない。ただただ成果を出せばよい
正確に言えば「Haskellは単なる技術であり」だな
科学の主たる目的は真理の探究、社会に価値を生み出す(または価値を増加させたり価値の増加を容易にする)のは技術
個々のプログラミング言語、特に実用を目指している言語、は
言語に関する様々な理論(構文の理論や意味論などで、これらは自然科学ではないが数学という科学…形式哲学とでも呼ぶべきもの…の一分野の成果)の
適用としてより「容易にプログラムを書ける」とか「よりバグの発生する可能性を減らす」といった現世的な御利益つまり価値の増大や創造を求めたものだから
> というわけでHaskellの成果を挙げて
うん、技術的成果としてのプログラミング言語に対して、この要請は実に適切だね
> Haskellは単なる科学であり魔術でも宗教でもない。余計な飾りは要らない。ただただ成果を出せばよい
正確に言えば「Haskellは単なる技術であり」だな
科学の主たる目的は真理の探究、社会に価値を生み出す(または価値を増加させたり価値の増加を容易にする)のは技術
個々のプログラミング言語、特に実用を目指している言語、は
言語に関する様々な理論(構文の理論や意味論などで、これらは自然科学ではないが数学という科学…形式哲学とでも呼ぶべきもの…の一分野の成果)の
適用としてより「容易にプログラムを書ける」とか「よりバグの発生する可能性を減らす」といった現世的な御利益つまり価値の増大や創造を求めたものだから
> というわけでHaskellの成果を挙げて
うん、技術的成果としてのプログラミング言語に対して、この要請は実に適切だね
304デフォルトの名無しさん
2017/04/18(火) 20:45:33.32ID:+2Ki/5Wl あのスレの次スレが立ってないからってこっちくるのはヤメレ
305デフォルトの名無しさん
2017/04/20(木) 11:33:28.13ID:UeCe6jDz 成果出まくりのC/C++はどちらかというと嫌われ者なので
C/C++の成果をどうやって否定しようかと知恵を絞っているのが現実
成果主義は机上の空論
C/C++の成果をどうやって否定しようかと知恵を絞っているのが現実
成果主義は机上の空論
306デフォルトの名無しさん
2017/04/20(木) 14:02:32.75ID:3rvpL7hF HaskellはC++に挑む気はなさそう(代わりにRustが挑んでそう)
Haskellの相手は頑張ってJavaでしょ
Javaクラスのパフォーマンスを少ない労力でパパッと実現みたいな
一応ネイティブで動くみたいだがランタイムシステムの監督の元だし、このランタイムシステムの効率ってのが怪しい
ガベコレ技術なんかJavaのそれに何周も遅れとってそうだし
参照透明だと最適化かけ易いって? 最適化の研究進んでるの?
Haskellの相手は頑張ってJavaでしょ
Javaクラスのパフォーマンスを少ない労力でパパッと実現みたいな
一応ネイティブで動くみたいだがランタイムシステムの監督の元だし、このランタイムシステムの効率ってのが怪しい
ガベコレ技術なんかJavaのそれに何周も遅れとってそうだし
参照透明だと最適化かけ易いって? 最適化の研究進んでるの?
307デフォルトの名無しさん
2017/04/20(木) 15:34:20.89ID:zhxiAG0o >>306
確かにGHCはあまり性能を追求しないね。
Haskell、OCaml、RacketでGCのレイテンシを測る
http://postd.cc/measuring-gc-latencies-in-haskell-ocaml-racket/
>Haskell:ワーストケースの停止時間は51ミリ秒
>OCaml:多くの停止時間は220マイクロ秒から1ミリ秒の間で、最長は2.7ミリ秒
確かにGHCはあまり性能を追求しないね。
Haskell、OCaml、RacketでGCのレイテンシを測る
http://postd.cc/measuring-gc-latencies-in-haskell-ocaml-racket/
>Haskell:ワーストケースの停止時間は51ミリ秒
>OCaml:多くの停止時間は220マイクロ秒から1ミリ秒の間で、最長は2.7ミリ秒
308デフォルトの名無しさん
2017/04/20(木) 23:42:51.61ID:bRzOMROq haskellをdisるスレ
309デフォルトの名無しさん
2017/04/21(金) 15:08:22.39ID:FrhbrHvt >>307
OCamlは性能★だけ★が売りだから速くて当然
元祖MLの醜い構文を正しモジュールに関連する諸機能を追加したのがStandard MLで
元祖MLを生み出したRobin Milner自身もStandard MLに入れ込んでいた
(Standard MLのformal semanticsの定義書とかまでMIT Pressから出版したしね)
ところがフランスINRIAの連中がMilnerやPaulsonらイギリスのStandard MLグループに対抗して
昔のMLの醜い構文のまま言語をオブジェクト指向へと拡張して作ったのがOCaml
でっ、実行性能の差で生き残ったのはOCaml
お蔭でMLはグチャグチャでグロテスクな構文のほうが生き残ってしまいましたとさ
だからOCamlは実行性能だけは良くて当然なんだよ、だってそれだけでML界の競争を生き残って来たんだから
OCamlは性能★だけ★が売りだから速くて当然
元祖MLの醜い構文を正しモジュールに関連する諸機能を追加したのがStandard MLで
元祖MLを生み出したRobin Milner自身もStandard MLに入れ込んでいた
(Standard MLのformal semanticsの定義書とかまでMIT Pressから出版したしね)
ところがフランスINRIAの連中がMilnerやPaulsonらイギリスのStandard MLグループに対抗して
昔のMLの醜い構文のまま言語をオブジェクト指向へと拡張して作ったのがOCaml
でっ、実行性能の差で生き残ったのはOCaml
お蔭でMLはグチャグチャでグロテスクな構文のほうが生き残ってしまいましたとさ
だからOCamlは実行性能だけは良くて当然なんだよ、だってそれだけでML界の競争を生き残って来たんだから
310デフォルトの名無しさん
2017/04/26(水) 18:54:44.10ID:tyKqE9/b Haskellで書かれた日本人作のゲーム、Steamで販売されてる
http://store.steampowered.com/app/591640
http://store.steampowered.com/app/591640
311デフォルトの名無しさん
2017/04/27(木) 14:26:27.43ID:7iFRDQtz うぉおおおおおお
312デフォルトの名無しさん
2017/04/27(木) 16:50:12.06ID:YJ6E48rA 『教養としての関数型プログラミングHaskell』とかいう分厚い本どうなの
313デフォルトの名無しさん
2017/04/27(木) 16:53:18.87ID:j4z9g1Hc 高価なウンコと聞いた
314デフォルトの名無しさん
2017/04/27(木) 18:37:54.82ID:dGEnPbzp 読んでないが筆者の名前はhackageでよく目にする
謎のオレオレライブラリを作るのが好きな人という印象だ
https://hackage.haskell.org/user/YoshikuniJujo
謎のオレオレライブラリを作るのが好きな人という印象だ
https://hackage.haskell.org/user/YoshikuniJujo
315デフォルトの名無しさん
2017/04/27(木) 21:51:28.67ID:fwPw5Zvz ステマか?
316デフォルトの名無しさん
2017/04/27(木) 22:06:53.42ID:YJ6E48rA いや純粋に黒くて大きくて書店で異様な存在感を放ってたので気になったんだけどウンコだったのか
317デフォルトの名無しさん
2017/04/27(木) 22:20:40.24ID:lNlBSSzH >>313
Amazonレビューにキツめのがついてたわ
Amazonレビューにキツめのがついてたわ
318デフォルトの名無しさん
2017/04/27(木) 22:23:13.42ID:lNlBSSzH 秀○システムは毛の壁本出してしまうという暴挙以来どうもイメージが悪くてな……
319デフォルトの名無しさん
2017/04/27(木) 23:09:35.55ID:Koc4MigP タイトルからは計算論やらラムダ計算関係の知識を教えてくれそうな内容に見えるけど、
レビューや内容紹介を見ると「Haskell学習」とかなら良かったんじゃないかな?
と内容も見もせずに思いましたマル
レビューや内容紹介を見ると「Haskell学習」とかなら良かったんじゃないかな?
と内容も見もせずに思いましたマル
320デフォルトの名無しさん
2017/04/28(金) 00:28:50.88ID:YlIU0bJf 初心者向けにStackの使いこなし、チュートリアルとか書いた方が喜ばれたね。
321デフォルトの名無しさん
2017/04/28(金) 00:38:53.42ID:vr010bnw 失望しました。代わりに Chris Okasaki 先生の純粋関数型データ構造買います
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でも止まんないっしょ
■ このスレッドは過去ログ倉庫に格納されています
