関数型プログラミング言語Haskell Part34

1デフォルトの名無しさん
垢版 |
2021/12/17(金) 12:57:26.37ID:NPioGyUL
関数型プログラミング言語 Haskell について語るスレです。

Haskell Language(公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ - Haskell-jp
https://haskell.jp/

前スレ
関数型プログラミング言語Haskell Part33
https://mevius.5ch.net/test/read.cgi/tech/1581326256/
2022/05/28(土) 00:21:10.26ID:1xwNIN3l
Cのライブラリに丸投げする効率化を考えれば
デバッグの効率化にはこだわらない方が丸投げしやすい
2022/07/18(月) 03:26:49.61ID:zDzunRmU
なんでここまで人気なくなったんだろうな
2022/07/18(月) 14:14:58.82ID:IRYfc5Qz
声の大きい人たちが使わなくなっただけでは
2022/07/19(火) 17:39:52.93ID:6V/PH7AR
個人が言語を自作できるレベルになってる説
団体は必須ではない
2022/08/07(日) 20:06:46.56ID:My+goEll
ハマりました
次のコード通らん理由が分からん

import Data.Ratio

[[ a,b],[c,d]] *** [[ p,q],[r,s]] = [ [ a*p+b*r, a*q+b*s], [c*p+d*r],[c*q+d*s]]

i [[ a,b],[c,d]] = [[d,-b],[-c,a]]

a :: [[Rational ]]
b:: [[Rational ]]

a = [[1%1,99],[0,100]]
b = [[100,0],[-99,1]]

main = do
mapM_ print $ [ a, b , i a , i b]
print $ (( i b ) *** ( i a ) ) *** b

実行時エラーで
prog: prog.hs:4:1-79: Non-exhaustive patterns in function

になる
一項目のprintの出力

[[1 % 1,99 % 1],[0 % 1,100 % 1]]
[[100 % 1,0 % 1],[(-99) % 1,1 % 1]]
[[100 % 1,(-99) % 1],[0 % 1,1 % 1]]
[[1 % 1,0 % 1],[99 % 1,100 % 1]]

を見てもどう見てもパターンマッチしてるのに?
何故?
2022/08/08(月) 19:26:19.73ID:NwZYLTPj
>>106
リストの長さがマッチしてない
長さが2でないリストをどこで作ったのかはソースを読めば分かる
***は長さが3のリストを返す
2022/08/09(火) 10:46:53.89ID:VUIfOlq+
>>107
あ、ホントだ
コピペミスかなんかか
thx
2022/08/11(木) 18:04:41.32ID:9dSVJvSP
おまいらこのクソ暑い夏をどうにかするCOOLなコードをHaskellで簡潔に書けんのか?
2022/08/25(木) 11:20:55.19ID:97f0Pf6Z
ttps://hackage.haskell.org/package/mtl-2.3/docs/src/Control.Monad.Writer.Class.html#tell

listen ~(w, a) = (w, (a, w))
この~はどういう文法なの?
2022/08/25(木) 21:14:39.81ID:+PRPT5FW
https://www.sampou.org/haskell/tutorial-j/patterns.html#tut-lazy-patterns
2022/08/25(木) 21:15:08.79ID:3SQ1xNiu
stack でwxHaskell インストールしようとしたんだが、
> stack install wxHaskell
とすると
Unknown package: wxhaskell
とでてインストールできない。
StackだとwxHaskellインストールできないの?んなわけないと思うんだが。
公式見てもstackの場合の方法が書いてない。
2022/08/29(月) 23:25:47.74ID:mJ1Da6QY
stackage に入っていないからじゃないかな?

最近アップデートされていないし
並行処理も問題ありそうだし…

stack と GUI で検索したらこんな記事があった
https://www.stackbuilders.com/blog/gui-application/
2022/08/30(火) 19:30:33.33ID:XzDfLd3k
みんな中央集権クラウドに騙されてる
2022/09/10(土) 21:18:15.99ID:Jyomj+F3
ボトルネックは事実上バグと変わらないから
結局パフォーマンスを考えると
Haskellはバグが混入しやすい言語と言える
しかも入出力は正しいから解決がクッソ厄介で実用性はない
2022/09/10(土) 23:20:56.83ID:6vG8VA3K
ロマン思考言語_
2022/09/11(日) 00:14:39.94ID:HO9VQuZG
まあ合ってるな
2022/09/20(火) 01:04:13.74ID:zJWv8hkC
ghci --show-options | wc -l
Output: 1200
2022/09/24(土) 01:20:51.22ID:v6+/ywPo
書き込んでいた専門家たちが書き込みをやめたので下火になっている感が出ているわけですね。
2022/09/24(土) 02:26:09.94ID:vtJ0GRzX
イヤ、でも実際した火なんじゃない?
やっぱりHaskellで“性能”と“可読性”の両立を図るのはかなり難しい
やっぱり言語の生い立ちというか、性格というか、性能面、特に速度面の性能面はどうしても優先順位が低い、しかし実務上はもちろんそこは最重要factorだからそこがでないとした火になるのもやむを得ないかと
2022/09/24(土) 03:13:03.66ID:v6+/ywPo
仕組みはわからんが計画的だろ。
言い換えると、騒ぐ奴らがうざいから騒がなくなるまで下火なんだろう。
2022/09/24(土) 03:21:31.25ID:cIbikbIQ
てか元々世界のメジャーな言語に躍り出ようというつもりなんかHaskellコミュニティにはないのかもね
Haskellコミュニティなんて学者の集合体でしょ?
実務になんか元々興味ないんじゃない?
2022/09/24(土) 17:34:21.27ID:v6+/ywPo
StackでGUIプログラミングしたいのですが、stackでインストールできるライブラリで
おすすめのものはありますか。
124デフォルトの名無しさん
垢版 |
2022/09/27(火) 18:16:48.82ID:2m9lsdvh
haskellで作ったチェスゲームありますか
コマとボードはきれいなグラフィックで
マウスでコマを動かすチェス
125デフォルトの名無しさん
垢版 |
2022/09/27(火) 19:10:55.70ID:rbvXlCo3
来年のRustがこの状態。
2022/09/27(火) 19:55:55.43ID:CVmtKHy4
Haskellに飛びつく層は
Rustには飛びつかんよね
Rustには面白みが無い
2022/09/27(火) 20:30:27.34ID:Ctbd02WQ
とにもかくにももう少しHaskellは速度性能を出すための方法の標準化について詰めてほしい
Haskell2010の文章のメモ化の部分の詰めがダメすぎる
実情のGHCとかで提供されてるものと差がありすぎて意味がわからん
GHCでの研究成果をもっと標準仕様に取り入れてほしい
何をどうやったら確実にドレコレはメモ化されるかハッキリ文書化してほしい
2022/09/28(水) 02:23:18.14ID:4krAnsc6
整理する気がないからな
どんどんカオスになって行く
2022/09/29(木) 03:37:20.42ID:IPtlf3/T
いまだにGHCというとGuarded Horn Clausesの方のGHCを先に思い出す
2022/10/01(土) 19:53:52.72ID:7gwAD0df
1番実用的な関数型言語やその影響が強い言語って何になるの?
2022/10/01(土) 20:00:27.14ID:IQLzQmPp
Cじゃね
2022/10/01(土) 22:58:35.36ID:76wmMtDf
標準規格を一番忠実に実装した奴が優勝みたいな考え方は全然数学的ではない
2022/10/03(月) 18:02:59.08ID:LGdcguEE
lisp系やocamlとか。
2022/10/04(火) 08:48:04.42ID:S20URLlI
ルールがない状態からルールが守られている状態へ誘導するか
何もしてないのに持続するルールを拾い集めるかの違い
135デフォルトの名無しさん
垢版 |
2022/10/07(金) 20:15:05.17ID:xpYSJYo6
F#では。
136デフォルトの名無しさん
垢版 |
2022/10/07(金) 20:28:34.11ID:lAeL408c
Erlang
2022/10/14(金) 22:28:23.68ID:GVf4qcGD
ラムダや <- や case で束縛される変数の値は二回以上計算されない
seqは計算のタイミングを変える効果しかない

難しいのは = で定義される名前だが
= の右辺で頑張ってseqを使っても報われない
2022/10/14(金) 23:54:06.57ID:91YiMGAd
でもhaskell 2010 reportには評価順を変える方法はseqしか規定されていない
GHQなどの実際の処理系でそれ以外のタイミングでメモ化されたりするのはあくまで処理系の独自仕様でしかない
ある処理系でメモ化されて早かったプログラムが別の処理系で同じ速度で処理してくれる保証などどこにもない
2022/10/15(土) 08:05:01.19ID:/BlEbfcm
>>138
もしかして、個人の感想のようなものを悪と思ってるのかね
そして客観的事実 (ようするに絶対正しい事実) と称するものが正義だと

個人の感想を排除するべきという思想はどこにも規定されてないでしょ
2022/10/15(土) 09:49:59.76ID:fUoifk8c
メモ化に関しては俺も>>138と同じような感想持ってるな
2022/10/15(土) 10:11:19.74ID:/BlEbfcm
ある人の感想が別の人の感想と同じになる保証はどこにもない
保証がなくても特に問題ないと判明したならそれでいい
2022/10/15(土) 10:19:45.48ID:+yYiQ+MP
一番嫌なのはネットに転がってるすごいスッキリしたプログラムがあって「おお、すげぇ」と思っても結局それはGHCのメモ化の恩恵でしかなくHaskell本来のそれではないので別の処理系では通用しないものであったりする事
事実上GHCが標準なのでGHCで早ければ「早いプログラムが書けない事はない」のではあるけど、じゃあGHCはどんな時は気をきかせてメモ化してくれるのか、どんな時はその事を利用して早い、しかし短い、わかりやすいプログラムを書けるのかはHaskell 2010 reportではなくGHCの方の仕様書を読むか、実験してみるかしかない、しかし前者はそもそもGHCの仕様書そのものどこにあるかわからないんだけど見つけてもおそらくメモ化の理論は相当に難しい論文レベルの話、さりとて実験で詰めていくのはデバッグと同じレベルのかなり苦痛な作業で、しかも完成したものは大概速さのために可読性をかなり犠牲にしないといけないものになる、当然可搬性も落ちてる
GHCがやってくれてる事全てでなくてもいいけどネットによく転がってるフィボナッチ数列とか素数生成とかのGHCの良きに計らってくれる機能を利用したスッキリした、けど早いプログラムくらいまでは標準化して全ての処理系で動くようにしてほしいけどね
2022/10/15(土) 11:46:05.26ID:fUoifk8c
まあ実際のところメモ化を考え出したら
Lispと同じように可読性を犠牲にした速度重視のコードしか生まれないので・・
メモ化は考えないのが筋だけどそうすると実用性は皆無であってつまり
2022/10/15(土) 15:59:55.52ID:/BlEbfcm
LispとHaskellの違いで重要なのは
モジュールの定義をインタラクティブにやらないこと
ghci起動時に全てのモジュールが定義され最後に
mainや他の式を評価・実行するところだけがインタラクティブ

そもそもmodule Main whereとかいうのは式ではない
式ではないから評価順序という考え方がそこでは通用しない
2022/11/03(木) 00:12:52.63ID:A4mGU1Ql
GHCがデファクトだしこだわりがなければ他のコンパイラを使うこともないでしょ
とはいえ関数型言語って速度を重視するタスクには向かないでしょ
速さを求めるのが間違い
2022/11/03(木) 01:14:31.73ID:+2fbLBnA
Symbolicsが失敗した事例を思い出す
あれも理想を追求したはいいけど何をやってもひたすら遅く
他社はそれより早く安い機材を次々と繰り出していた
当然惨敗は必然だった
2022/11/03(木) 06:02:33.84ID:A4mGU1Ql
静的な型付けによる頑健性だとrustがあるしなぁ
2022/11/03(木) 11:53:42.15ID:k32TY8HF
結局のところHaskellの言語策定をしてるコミュニティは学者さんのコミュニティで実用的な性能を向上させる事にそもそも興味ないから実務面での有用性を期待するのは無理やね
2022/11/04(金) 01:33:00.25ID:ggdePY4U
まあそうだろうな
2022/11/05(土) 10:09:23.49ID:nyx0vuE5
>>142 の指摘って他の言語のGCにもそのまま当てはまると思う。
151デフォルトの名無しさん
垢版 |
2022/11/06(日) 14:53:18.67ID:p6fV7yyc
Haskellで開発している会社ってどこがあるの?
検索するとHERPやTuruCapitalしか出てこない…
152デフォルトの名無しさん
垢版 |
2022/11/06(日) 16:00:47.05ID:8Hp8Ymz2
GHC9.4.3 リリース
2022/11/06(日) 16:35:55.22ID:MgGeIf3l
Haskell wikiに載ってるやつ見るに、部分的にHaskellを使うって感じかなぁ
2022/11/06(日) 18:08:25.72ID:SOHxH3HV
>>151
一時期富士通が募集してたことがあったような
もうないからやめたのだろうけど
155デフォルトの名無しさん
垢版 |
2022/11/06(日) 19:47:21.37ID:p6fV7yyc
あと朝日ネットの募集要項はHaskellがありました
朝日ネットに応募してみようかなぁ。
HERPはリファレンスチェックが面倒…(上司とかと会話したくない)
2022/11/07(月) 00:00:47.60ID:35GjxAYG
facebookも使ってた気がする。
157デフォルトの名無しさん
垢版 |
2022/11/07(月) 00:41:59.56ID:aVSF4vDw
Haskellの求人、あまり見つからないんですが、言語として微妙な感じなんでしょうか…?
HaskellでできることはPython、Java、Go、Scalaでできる、みたいな…
あえてHaskellを使う意味がない、みたいな…
2022/11/07(月) 11:14:09.19ID:uMWKgAVp
オーバーヘッドを気にせず頑健性を取りたいとき
うーん、具体例が出てこない
2022/11/07(月) 12:17:58.82ID:y2qdzeiV
>>157

> Haskellの求人、あまり見つからないんですが、言語として微妙な感じなんでしょうか…?
> HaskellでできることはPython、Java、Go、Scalaでできる、みたいな…
> あえてHaskellを使う意味がない、みたいな…
かきか
2022/11/07(月) 12:18:26.38ID:y2qdzeiV
誤操作スマソ
2022/11/08(火) 09:36:33.50ID:VjMrXhSs
消費者目線ではGHCはフリーソフトだからコストが高いとは言えない

コストという物差しが万能ではない具体例がいま出た
2022/11/09(水) 01:51:03.18ID:3Bh922De
まあ学者さんたちのお遊びだからね・・
2022/11/09(水) 10:38:48.12ID:wL144bz5
どういう結果になるのか契約とか誓約しないのがオープンソース
お遊びにしかならないという保証もしてない
2022/12/02(金) 14:29:56.51ID:fOU9+Fqp
Haskellまだイキテル?
2022/12/03(土) 12:50:06.92ID:HJhX36nM
無生物であることは保証する
何も実験してないのに保証することを数学的と言えないこともない
166デフォルトの名無しさん
垢版 |
2022/12/12(月) 16:34:32.76ID:Yq3RU8vo
Unreal Verse
https://simon.peytonjones.org/assets/pdfs/haskell-exchange-22.pdf
サイモンさんが関わってるからHaskellの弟分なのかな?
unreal engineに採用なら関数型プログラミングでは
一番使われることになるんだろうか
2022/12/13(火) 21:33:17.94ID:s5AI7uvQ
ちょっとやってみるかと思ったら
今はHIEじゃなくてHLS使えみたいなのがぼちぼち出てくるが
じゃあHLSをemacsからどう利用すりゃいいのってなると情報なし

どうなってんのよ
haskell-modeなんて2016で止まってるし
168デフォルトの名無しさん
垢版 |
2022/12/15(木) 08:50:05.16ID:hYy+q+Gy
>>166
10年越しのビジョン実現で胸熱
https://pc.watch.impress.co.jp/docs/column/kaigai/555239.html
>プレゼンテーションを見ると、Sweeney氏はゲームコードを走らせるプラットフォームが超並列化して行くことを予見し、Unrealの場合は80%のCPUユーセージを並列化が可能だと語っている。また、(ソフトウェア)トランザクショナルメモリや、プログラミングには関数型言語(例としてHaskellを挙げていたが、同時にHaskellに好ましくない点もあると説明している)がフィットすることなどを語っている。

それにしてもSPJを引き抜くなんてゲーム業界はすごい
169デフォルトの名無しさん
垢版 |
2022/12/15(木) 11:15:36.01ID:3Q63kYiw
いや15年越し
https://game.watch.impress.co.jp/docs/20080911/epic.htm

>Sweeney氏は純粋関数型言語のもつ並列処理安全性に着目しており、将来的にゲームプログラミングはそういった処理系に移行していくべきだとした。Sweeney氏はそのひな形として言語“Haskel”を挙げているが、ゲーム開発のメインストリームたり得る言語はまだ登場しておらず、将来に期待しているという。
170デフォルトの名無しさん
垢版 |
2022/12/17(土) 23:16:08.75ID:7V76W+iX
HaskellでWebシステムのバックエンドを開発したときのメモリ使用量は
GoやPythonと比較してどの程度でしょうか?多いですか?少ないですか?
2022/12/23(金) 15:37:27.80ID:Rf1vHPUu
サーバとクライアントのサンプルプログラムを練習で書いたのだけど
toSend <- T.getLine
sendAll sock (E.encodeUtf8 toSend)
日本語文字列を出力するのにByteStringを経由しなきゃいけない
もしかして任意の型でやりとりがしたいとき
自分でByteStringにパック&アンパックしなきゃいけない?
多分、C言語のFFIがベースになってるからこんな風になってるんだよね?
2022/12/23(金) 20:44:32.65ID:Gou4DLut
>>171
明示的に変換しなきゃいけないのは事実だがその原因はC言語じゃない
言語と無関係だからこそHaskell2010でもC言語でも同じデータ構造が使える

>>170
データだけ見ればメモリ使用量を同じにすることは可能
2022/12/29(木) 17:00:27.04ID:ZBF5EoRT
モノイド、関手は習得できたけど
自然変換で躓いてる
2022/12/29(木) 23:24:37.93ID:pM4wQIt0
今haskellでguiを作るなら何がいい?
できれば低レベル層のライブラリは使いたくないけど
wxはもうめんてされてない
fugets?threepenny?webviewhs?どれもarchのパッケージにない
実用言語としてhaskellを使いたいのに使えないのばかりで悲しい
2022/12/30(金) 12:18:58.51ID:/hxsvxNk
ところでwxHaskellが流行らないのはなぜ?
wxが流行ってないからかな?
2022/12/30(金) 13:53:40.82ID:FXsz7+hW
本当に必要なのはドリルの大量生産ではなくドリルでもなく穴だからかな
2022/12/30(金) 19:21:21.60ID:dTZ5gB6H
Haskellはすでに見放されてる感ある
178デフォルトの名無しさん
垢版 |
2023/01/02(月) 01:15:52.75ID:jETc9FsM
>>177
そうなの?それは実務的な意味で?
179デフォルトの名無しさん
垢版 |
2023/01/02(月) 03:01:15.30ID:/m9PT5PE
ステマが酷すぎた。
180デフォルトの名無しさん
垢版 |
2023/01/02(月) 03:01:59.29ID:/m9PT5PE
言いなおそう。
某出版社のステマが酷すぎた。
181デフォルトの名無しさん
垢版 |
2023/01/03(火) 00:10:20.46ID:7mh2KVDC
見放されるようになったのは、
モナドってなに?というミステリアスで興味深い問いがいつのまにか
白けた話になったからじゃないか。もうどうでもいいというか。
182デフォルトの名無しさん
垢版 |
2023/01/03(火) 04:29:29.65ID:yYGSV1g6
技術評論社のせいでは?
2023/01/04(水) 05:08:58.65ID:peYJ5uzH
メンテナーが次々と逃げ出してるのが象徴的・・
わかりやすいコードを書くとすこぶるパフォーマンス悪いし
だからといって頑張ると一体これは何をしたいのだってなる

遅延評価がデフォルトなのも非常にまずいし
正格評価と切り分けて結局は書かなければならずまだまだ発展途上だと感じる
いっそのこと正格評価はなしとした方がいっそ清々しい
184デフォルトの名無しさん
垢版 |
2023/01/04(水) 18:10:50.86ID:HUTbVNXS
PureScriptに移行しようぜ
正格評価で使いやすいし
2023/01/05(木) 03:59:19.12ID:PBBtO4Nd
しかし無限数列とか表現できなくなるのがなぁ
2023/01/05(木) 12:24:48.41ID:dQdtWkz5
あんなもの現実には扱えないからな
適当な数値を上限にしとけばいいだけ
2023/01/05(木) 13:19:36.00ID:PBBtO4Nd
イヤ、“表現できる”ってとこに意味があるんだよ
2023/01/05(木) 14:40:58.83ID:dQdtWkz5
その割にデメリットの方が大きすぎる
やはりいらないよ
189デフォルトの名無しさん
垢版 |
2023/01/14(土) 23:43:44.49ID:vLwyb8f9
PureScriptと被ってるかな?
[GHC 9.6.1-alpha1 is now available - Announcements - Haskell Community](https://discourse.haskell.org/t/ghc-9-6-1-alpha1-is-now-available/5585)
2023/01/17(火) 00:55:50.42ID:zIKNxshB
無限の長さの [a] を仮に廃止して他の言語と同じような方式に変えたら IO a のような型になる

生物学とか好きそうな人達は [a] と IO a の差が致命的 (つまり一方は死ぬが他方は生き残る)
と決めつける傾向がある
2023/01/17(火) 01:31:37.81ID:PP1OxyD+
生物学関係ないな
2023/01/17(火) 03:13:49.00ID:zIKNxshB
言語は死なないとか復活させればいいだけとか思うならもう生物学関係ない
そう思わないなら関係ありそう
2023/01/17(火) 08:07:29.90ID:Inpyi8aQ
無意味な比喩表現
2023/01/19(木) 01:20:46.84ID:cE+DUb2P
クラウドは中に人がいるのか無人なのか調べられないので
人間と機械を混同したのではなく不確実にした
2023/01/19(木) 07:47:39.45ID:7wHhBGeN
意味不明
もう少し文章を書く練習をしろ
2023/01/19(木) 17:42:25.26ID:ugYwIpAQ
嘘を書くのをやめろって言われない努力はしてる
現に、嘘だと言われない
2023/01/19(木) 20:45:58.03ID:LuniV29G
間違ってさえいない文章
真偽以前に中身がない
2023/01/19(木) 20:49:17.03ID:LuniV29G
それっぽいだけで少し読めば大したことすら書かれてないのがわかる
2023/01/19(木) 21:18:32.97ID:ugYwIpAQ
「わかる」と「意味不明」は矛盾しそう
どっちかが嘘ついるのでは
2023/01/19(木) 21:33:25.41ID:QROh3L3M
>>199
お前読解力もないのか
もうこのスレ来るなよ
2023/01/19(木) 21:38:24.06ID:CHvJHSS4
お前も反応すんなよ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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