関数型プログラミング言語Haskell Part31©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/09/27(水) 02:33:08.70ID:2XAqPuH2
関数型プログラミング言語 Haskell について語るスレです。

haskell.org (公式サイト)
https://www.haskell.org/

前スレ
関数型プログラミング言語Haskell Part30
http://mevius.2ch.net/test/read.cgi/tech/1484491434/
2017/12/23(土) 23:54:48.18ID:UP/Zv3hx
>>382
楽かどうかという視点ならば、前後に入れるだけなら、
その手間は runApp 関数の中に入れるのと同程度ではないか?

別の処理だからという視点ならば、確かに一見理にかなっていそうたが、
アプリが立ち上がった直後、エントリポイントのロールよりも前に仕事をするものとは、
いったいどのようなロールなのだろう?
私が見てきたアプリでは、runApp 関数の中でコマンドライン解析や設定ファイルの読み込み、
ログシステムの構築なども行っていた。
要するにアプリを動かす準備だ。
準備をする前にすべき事とは?


>>387
runApp 関数内にそのアプリ専用のエントリポイントが書かれたものしか見たことがなく、
それを別のモジュールやアプリに組み込むという状況が想像できないのだが、
具体的にどういう事なのだろう?
その場合、関数名が main だとなぜ困るのだろう?
389デフォルトの名無しさん
垢版 |
2017/12/24(日) 02:26:59.79ID:0qLezeKt
>>378
社員が総出でtwitterで開発が上手くいかなかったから詐欺にされたって
デマ流しまくっているじゃん
2017/12/24(日) 07:27:03.02
最近毛の壁みないな
2017/12/24(日) 13:10:48.98ID:L0WbVZsM
壁毛ならマ板にスレあるよ
392デフォルトの名無しさん
垢版 |
2017/12/25(月) 01:09:51.28ID:KmZOPanU
pythonにはxonshとかいうシェル言語があるらしい
http://vaaaaaanquish.hatenablog.com/entry/2017/11/30/175236
これのHaskellバージョンがあれば便利じゃないか。
Haskellとの親和性は高いと思う。シェルスクリプトって要はコマンドのコンビネータだし、コマンド呼び出しの構文は関数適用によく似てる。
2017/12/25(月) 01:12:38.31ID:KmZOPanU
ただ、ls -a -l -d hoobar みたいなのをシームレスに書くのはチャレンジングな課題だ。
引数の文字列リテラルのリストなどをコマンドラインにイチイチ打ち込むのは面倒くさい。
RebindableSyntaxでマイナスを定義し直して、、いや、悪手っぽいか。
なるべくHaskellを書いていきたい。いちばん身近なところを置き換えられたなら、とても良い。
2017/12/25(月) 05:14:44.74ID:/fea/C1E
haskellバージョンのイメージわかないけど
haskellシェルは何がどう便利になるというの?
2017/12/25(月) 12:02:29.99ID:EPafu7oO
pythonの真似だから便利さもpythonと同じになる計画なんだろ
同じにならなかったら、計画通りに行動しなかった奴が戦犯で、計画立てた奴は無罪
2017/12/25(月) 12:28:50.13ID:F9gRwc9o
Haskellシェルだとhsshとかになるん?
397デフォルトの名無しさん
垢版 |
2017/12/26(火) 01:06:43.66ID:ntWKYT9z
シェルスクリプトを使えばいいと思う
なぜコマンドの実行にHaskellを使う必要があるのか
2017/12/26(火) 11:29:24.52ID:zQBvuC0m
まあconfigureスクリプトにはm4とかいうプリプロセッサがあるから意外と難しいよな
399デフォルトの名無しさん
垢版 |
2017/12/29(金) 04:23:00.56ID:PWPZaOro
EzoeがいつHaskellに飽きて堂々とディスり始めるのか楽しみ
2017/12/29(金) 05:30:43.56ID:dUewwmlf
ガチC++erから見たHaskellというのに少し興味が湧いている
2017/12/29(金) 05:56:52.00ID:xARFptR0
仕様壊れてるC++に慣らされきった人間にHaskellの厳格さの価値がわかるのかねぇ
静的型不要論的な妄言吐きそう
2017/12/29(金) 13:11:23.08
江添っぽさがふんだんに盛り込まれていてよい
2018/01/01(月) 12:12:22.18ID:bFOlOWpA
この人は本当にプログラム書けるのかと不安になることがあるよな。
はっきり言ってc++普及に関しては逆効果をあげてるとしか思えん。
2018/01/01(月) 16:00:21.64ID:pGnY0Ifz
芸人だと思って見てるわ
2018/01/01(月) 16:42:32.16ID:O/UW/N2W
老害の見本
2018/01/01(月) 16:44:34.98ID:QrIEjumd
ローカルマシンにある jenkins において、haskell コードのビルドに stack を使いたいのですが、
その際に環境変数として HOME が設定されていないと使えません。

そこで、ビルド時に使うシェルスクリプト内で HOME を JENKINS_HOME に設定しましたが、
このディレクトリでは何か問題あるでしょうか。
取りあえずやってみましたら、今のところ特に問題なくビルドできていますが・・・

スレチでしたらすみません。
2018/01/01(月) 18:03:12.68ID:TBixhmIP
>>406
jenkinsはわからないがstackはどうやら $HOME 直下に .stack ディレクトリを作って
そこに(必要なら)ghcとかをインストールするらしい。
例えばconfig.yamlもそこに入っているので、普段の$HOMEにそれがある場合は、jenkinsでのビルドと設定が変わってしまう。
とはいえ、このファイルが働くのは特定のプロジェクトに属さない動作のとき(stack newとか)だけっぽいので、
ディスクの容量が切迫してるとかでない限り、問題ないんじゃないかな。
2018/01/02(火) 00:37:55.48ID:hQQ1WWOS
C#しか知らない大学生なんだが関数型を理解したいんだが何すれば
409デフォルトの名無しさん
垢版 |
2018/01/02(火) 01:13:22.41ID:wAfZ+SpV
H本を読む
2018/01/02(火) 01:16:32.50ID:hQQ1WWOS
F#と比べてどれがいい?
411デフォルトの名無しさん
垢版 |
2018/01/02(火) 01:21:41.45ID:wAfZ+SpV
は?勉強目的なら言語名でググって検索件数が多いやつのほうが解決策見つけやすいだろHaskell一択だろぉ
2018/01/02(火) 01:44:03.46ID:9JghhVFB
まずHの練習からしたほうがいい
2018/01/02(火) 01:59:58.11ID:hQQ1WWOS
>>411
そうなんですか
2018/01/02(火) 02:11:04.88ID:bfdSjs8c
F#もいいけどまずはHaskellの純粋さに感動してからの方が良いよ
2018/01/02(火) 08:11:19.29ID:hHAEZ1EB
言語仕様はもちろんとして純粋関数型のデータ構造やアルゴリズムも合わせて学習しないと手詰まりになる
2018/01/02(火) 13:53:49.75ID:2m2cwFbr
状態マシンでなく関数合成に持ち込む為の定番手法,
例えばiteratee?とかの知識も知りたい。
2018/01/03(水) 00:36:59.01ID:Mw/JDaoF
なぜ関数プログラミングは重要か
http://www.sampou.org/haskell/article/whyfp.html
2018/01/03(水) 00:53:21.23ID:EBTl2OcL
関数型脳を鍛えるにはHaskellがよい
2018/01/03(水) 01:24:32.28ID:wPBJzesv
プラグマとかシンタックスシュガーのオプションがやたらあって、
古い構文がデフォルトでなくなったり、いまだに安定してないイメージが強い
2018/01/03(水) 03:21:56.48ID:Mw/JDaoF
安定してるプログラミング言語ってあんの?
2018/01/03(水) 04:47:00.22ID:JH/i0Zss
拡張の数は標準の安定性と関係ないし非推奨になった構文も知る限り2,3個程度しかないし言うほど安定してなくはないと思うよ
主要な拡張の破壊的変更も多ければ不安定だがそこは知らん

安定してる言語の話題たまに出るけどどの言語もそれなりに不安定という結論以外になったとこ見たことない
2018/01/03(水) 10:58:30.19ID:HUvqSveQ
>>420
そらLispよ
2018/01/03(水) 13:51:49.16
枯れ
2018/01/03(水) 19:39:52.12ID:JH/i0Zss
そういや使用安定してるからで極地でCLが使われてたな
2018/01/03(水) 19:43:20.34ID:3L8KTbvi
x86アセンブラ、めっちゃ枯れてますよ。
2018/01/04(木) 01:39:52.22ID:T+TxDQDt
https://i.imgur.com/uOo7sWV.gif
2018/01/05(金) 10:31:44.65ID:HcxYMAOQ
>>407
アドバイスありがとうございました。
参考にします。
2018/01/06(土) 13:51:16.58ID:JNGs0wZB
再帰ってわかりにくくないですか?
実際によく使われているんですか?
2018/01/06(土) 14:01:05.48ID:NNbzWCOQ
扱うデータ構造が再帰的なら(連結リストとか木とか)
アルゴリズムも再帰の方が自然
2018/01/06(土) 14:28:29.03
初見だと脳のワーキングメモリをオーバーフローして拒絶反応を示すけど
慣れたら問題先送りにしちゃって尚且つ最後には解決しちゃう魔法みたいで気持ちいいよ
2018/01/06(土) 14:36:45.23ID:knmVGZUA
ループより再帰が好きだけどスタック気にしたりわざわざ末尾再帰にしなきゃいけなかったりするのは割とめんどい
2018/01/06(土) 17:33:04.10ID:CqdhyGHO
breakとcontinueとreturnとthrowは関数ではない
関数ではないものを見るとマクロを書きたがるのがLisp
Haskellはマクロを使わない技術が発達したからなんでも関数を使う
433デフォルトの名無しさん
垢版 |
2018/01/06(土) 18:38:34.20ID:ttApPSmY
HaskellはCのプリプロセッサ(俗に言うマクロ)を使えるのでは
2018/01/06(土) 22:41:09.20ID:dYI3l1P4
エラーの原因を教えて下さい
https://ideone.com/yGg3zM#stdin
2018/01/06(土) 23:19:28.76ID:knmVGZUA
>>434
はい
https://ideone.com/0gDEIW
436デフォルトの名無しさん
垢版 |
2018/01/06(土) 23:31:44.70ID:ttApPSmY
エラーの原因を教えてほしいという奴にエラーの原因を教えないのがHaskellerか
また同様のエラーが出てもこのスレにくればコード書き直してやるよっていう優しさか
2018/01/07(日) 00:03:32.13ID:CSD5n8Vo
ハスケラーならコードで会話できるだろ?
2018/01/07(日) 00:18:57.89ID:gMArQtmD
Windows10でstackのプロジェクトをbuildするとエラーが出てビルド出来ないお(´・ω・`)

While building custom Setup.hs for package ........
..
..
..
Process exited with code: ExitFailure 1
2018/01/07(日) 00:26:59.29ID:dTX3sH72
ボウヤは『windows10 haskell stack build error』でググるとかはしたのかい?
2018/01/07(日) 00:50:52.73
飢える者に魚を与えても一日しか救えない
釣りを教えれば一生救えるやもしれぬ
してみれば、>>435は魚を与えたのじゃ
2018/01/07(日) 01:00:14.22ID:r/irtiIZ
賢者乙
2018/01/07(日) 01:20:55.91ID:gMArQtmD
>>434
>>435
条件ミスってて全部otherwiseに行ってたのも直したらちゃんと動きました
ありがとうございます
2018/01/07(日) 08:44:45.58ID:zleJ4q+h
>>438
Windowsで動かないパッケージ使ってるとか?
2018/01/07(日) 18:07:55.57ID:HpBedZUr
>>428
好き嫌いというか、ループはループ中で変数を操作するから値を返せるのであって、変数を言語から排除すれば自然にループも排除されるんじゃないの?

ループがあっても再帰が不要にはならない。でも再帰があればループ不要は本当の話。だからこそ変数を排除した言語があるんでしょ。
2018/01/07(日) 20:35:35.56ID:gMArQtmD
>>438 の原因はプロジェクトのパスに日本語が含まれているからでした...orz
2018/01/07(日) 21:17:59.03
悲しいかな
2018/01/08(月) 01:26:04.04ID:LRSoqKZx
haskellプログラミングできたンゴ
https://i.imgur.com/rzM37pq.png
2018/01/08(月) 01:40:46.80ID:6LQHZKeL
挿入ソートか やるじゃん
2018/01/08(月) 02:31:15.01ID:oivpkpFd
>>447
toBarの仕事はもっと少なくした方がいいよー
ソートとかは既存関数で手抜きしたけど、参考までに
https://ideone.com/fGFOEl
2018/01/08(月) 10:11:27.13ID:ai+lPEJ3
stack の使い方について質問です。

stack new で作ったプロジェクトの package.yaml に executables と tests が設定されています。
その上で、tests のみのビルドあるいはビルド&実行を行うという事をしたいです。
しかしうまく行きません。
余計なものまでビルドされたり、実行されたりします。

executables には cmd-exe というターゲットがひとつ、tests には cmd-test というターゲットがひとつあるとします。
まず cmd-test のビルドだけを行いたく、stack build :cmd-test コマンドを実行してみました。
すると、cmd-exe と cmd-test がビルドされ、かつ cmd-test が実行されてしまいました。

今度は cmd-test のビルドと実行を行いたく、stack test :cmd-test コマンドを実行してみました。
すると、こちらも cmd-exe も一緒にビルドされてしまいました。

cmd-exe をビルドしないで cmd-test のみをビルドする方法、
そして cmd-test を実行しないでビルドのみを行う方法はあるでしょうか。
2018/01/08(月) 12:02:33.14ID:ai+lPEJ3
>>450
実行しないでビルドだけ行うのは --no-run-tests オプションを付けることで実現できましたが、
それでもまだ cmd-exe の方も同時にビルドされてしまいます。
2018/01/08(月) 13:58:59.98
Haskell、その学習に多大な苦労を強いる割に遅過ぎないですかね
http://benchmarksgame.alioth.debian.org/u64q/haskell.html
2018/01/08(月) 14:07:49.41ID:jbPveYoe
普通の言語のできない数学者がプログラミングできるようにするための言語だ
彼らにはたやすい
2018/01/08(月) 14:17:08.35ID:LRSoqKZx
速さよりもバグの少なさが長点なのでは...
2018/01/08(月) 15:59:26.22ID:eAAAEsR7
デフォルト遅延評価に破壊的更新超苦手とかいうパフォーマンス的には冗談みたいな存在なのに
静的型付コンパイルというだけでVMアンチ勢から謎の期待を向けられる言語Haskell
2018/01/08(月) 16:35:37.59ID:puck2ipT
この先haskellで良いGUIフレームワークって出ると思う?
2018/01/08(月) 16:52:31.19ID:ai+lPEJ3
>>456
現行のGUIフレームワークの問題点は何でしょうか?
2018/01/08(月) 16:54:40.06ID:edhbuhXG
汎用かつネイティブの作法に従うものがいいなぁ。
2018/01/08(月) 21:39:25.30ID:fNfSzvO3
>>452

いつからHaskellの5行クイックソートが遅いと錯覚していた? - Qiita
https://qiita.com/as_capabl/items/39e55e7a035dea4dc93a
2018/01/08(月) 22:56:46.89ID:LRSoqKZx
おまえらってIDE何使ってるの?
2018/01/09(火) 07:52:35.28ID:jdJt8oqE
>>459
>Haskellは遅延評価なので、リストを返す関数だからといって中間データとしてのリストを必ず作成する訳ではありませんから、
>結果を即座にfromListで書き込めば実質的に配列を出力する事が可能です。
ほんとぉ?
もう融合変換なんていらんやん
2018/01/09(火) 11:11:12.53ID:4pyxMvRN
中間データが不要(融合変換が不要とは言ってない)
2018/01/09(火) 11:23:20.89ID:jdJt8oqE
せやな
リストのfold/buildやな
2018/01/09(火) 13:28:03.42ID:4pyxMvRN
まあグラフ簡約がなかったらどうなるか実験した方がいいと思う
465デフォルトの名無しさん
垢版 |
2018/01/09(火) 22:16:54.64ID:zX7pY+gm
>>455
遅延評価=遅いって考える理由は?
2018/01/09(火) 22:55:36.65ID:0kb7P5He
>>465
ほとんどの場合サンクを作るのは無駄だし最適化にも不利
2018/01/10(水) 00:53:00.88
haskellのコンパイルエラーメッセージが難解すぎる
2018/01/10(水) 00:56:33.80
どうすれば直るか教えて下さい。
https://ideone.com/VhTqZE
2018/01/10(水) 01:23:11.48ID:2r/l0e/u
>>468
問題があるのは10行目 return (shuffle (i - 1) flipped)
これの型は実際には、IO (IO [Int]) だが期待されているのは IO [Int] だ。
IO(などのモナド) に包むために使われる return はここでは不要。外すと IO [Int] になってコンパイル通る。
2018/01/10(水) 01:29:37.26ID:2r/l0e/u
>>460
> おまえらってIDE何使ってるの?
>>73 あたりで同じ質問があった。VSCode, spacemacs が人気
2018/01/10(水) 01:29:51.07
なるほど!
472デフォルトの名無しさん
垢版 |
2018/01/10(水) 18:04:01.49ID:CldIXwzW
>>455
この話をすると決まってStrict拡張を持ち出してくるのが痛いHaskellerの特徴だな
じゃあ最初から遅延評価なんかすんじゃねえよ
2018/01/10(水) 20:08:59.81ID:YX2ZZ0s/
パフォーマンス的にはC/C++が王道だから素直にFFIを持ち出すのが王道
C/C++とFFIを無視するのは某言語の痛い特徴だよ
474デフォルトの名無しさん
垢版 |
2018/01/10(水) 21:51:06.06ID:CldIXwzW
久々にHaskellで簡単なプログラム書いたんだけど
構造体使うだけでStateモナドもlensも必要になるあたりやっぱ欠陥言語だなこれ
最初から言語機能にいれとけや
2018/01/10(水) 22:51:06.88
bindは1つの引数しかできないんですか?
アプリカティブスタイルを使わないと無理ですか?
https://qiita.com/7shi/items/85afd7bbd5d6c4115ad6
476デフォルトの名無しさん
垢版 |
2018/01/11(木) 00:40:52.51ID:vZTNKaQ4
>>466
その理屈だと遅延評価しない方は更に遅いじゃん。
2018/01/11(木) 11:20:18.33ID:OitKCfql
欠陥のない言語があるならぜひ知りたいなあ
2018/01/11(木) 11:34:32.09ID:yR+nWLrx
クラスより構造体
メソッドよりフィールドが必要という常識を取り戻すだけで十年単位の時間がかかる
2018/01/11(木) 16:22:14.98ID:I4QPsg6T
>>476
480デフォルトの名無しさん
垢版 |
2018/01/11(木) 16:32:20.02ID:+cHMvoU8
haskellでできることは他の言語だと難しくて
他の言語だと簡単なことはhaskellだと難しいという
2018/01/11(木) 23:26:54.83ID:CSSFSU7v
>>480
変態言語やん
2018/01/11(木) 23:57:27.46ID:kh3sTkz1
それ、褒め言葉やで
483デフォルトの名無しさん
垢版 |
2018/01/12(金) 01:48:25.78ID:GmCW/u04
スクリプト言語を許容できてHaskellをその性能から許容できないというのは理解できない感覚
2018/01/12(金) 11:48:37.84ID:xeu4OQ73
感覚ではなく統計の取り方がそうなってるんだな
シェルスクリプトなんてプログラムのコンパイル時と起動前に実行するやつだから
起動するまで何分待たされてもベンチマークには関係ないから
2018/01/14(日) 11:36:12.66ID:OihlBKK7
型推論まわりを雰囲気で使っていました。
初等的なケースではそれでも問題なかったんですけど、
OVERLAPS とか type family とか出てきてから付いていけなくなりました。

助けてください。
https://ideone.com/XQ17ms
2018/01/14(日) 23:23:09.38ID:ppap/O0M
性能からって話はないな。
主にファイルIOやネットワークIOの気軽さの問題だと思うけど。
2018/01/14(日) 23:30:08.22ID:fSoR9A9v
初心者だから適当だけどそこら辺はバンバンFFI使えばいいんじゃないのとか思ってしまう
そういうもんでもないのか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況