関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ
https://haskell.jp/
前スレ
関数型プログラミング言語Haskell Part31
https://mevius.5ch.net/test/read.cgi/tech/1506447188/
探検
関数型プログラミング言語Haskell Part32
■ このスレッドは過去ログ倉庫に格納されています
2019/01/29(火) 09:05:47.90ID:gJP/u7IJ
270デフォルトの名無しさん
2019/03/23(土) 19:48:40.97ID:abrpiqJH >>259
https://i.imgur.com/816HQOu.jpg
https://i.imgur.com/wTI8fNg.jpg
一応、末尾再帰も式変形した定義通りなんだけどね。
fib3 0 a _ = a
fib3 n a b = fib3 (n - 1) b (b + a)
n = フィボナッチ数のn番目(fib n)
a = fib nの時のフィボナッチ数
b = fib (n + 1) の時のフィボナッチ数
fib3 nはfib3 (n - 1)のbがaになり、b(fib3 (n + 1))はfib3 (n - 1)のb(fib3 n) と a(fib3 (n - 1))を足したものである。
https://i.imgur.com/816HQOu.jpg
https://i.imgur.com/wTI8fNg.jpg
一応、末尾再帰も式変形した定義通りなんだけどね。
fib3 0 a _ = a
fib3 n a b = fib3 (n - 1) b (b + a)
n = フィボナッチ数のn番目(fib n)
a = fib nの時のフィボナッチ数
b = fib (n + 1) の時のフィボナッチ数
fib3 nはfib3 (n - 1)のbがaになり、b(fib3 (n + 1))はfib3 (n - 1)のb(fib3 n) と a(fib3 (n - 1))を足したものである。
271デフォルトの名無しさん
2019/03/23(土) 23:02:28.70ID:3o0No0Hu >>269 賭けない、は具体的には何? 型シノニムを使わないということ?
272デフォルトの名無しさん
2019/03/24(日) 00:23:58.92ID:d5Z4QiMu >>271
使うのは自由だが可読性の勉強等はしないということ
使うのは自由だが可読性の勉強等はしないということ
273デフォルトの名無しさん
2019/03/24(日) 00:47:12.07ID:xnhJaehN >>272
悩んでないでスタイルを決め打ちして自分が自然だと思える書き方で行く、みたいな感じですか
悩んでないでスタイルを決め打ちして自分が自然だと思える書き方で行く、みたいな感じですか
274デフォルトの名無しさん
2019/03/24(日) 09:54:41.46ID:d5Z4QiMu そんな言葉は使う必要がねーんだ
書き方は決まってないのにもうすでに書き終わってるからだ
書き方は決まってないのにもうすでに書き終わってるからだ
275デフォルトの名無しさん
2019/03/24(日) 11:22:25.74ID:aOFJUm+g やっぱりHaskellは常人向けではないんですね
Ocamlやります
Ocamlやります
276デフォルトの名無しさん
2019/03/24(日) 12:49:13.41ID:d5Z4QiMu そういえば言語も決まってなかったな
常人は言語を決めないとプログラムを書けないってマジ?
常人は言語を決めないとプログラムを書けないってマジ?
277デフォルトの名無しさん
2019/03/24(日) 15:26:29.39ID:x/w14fyx278273
2019/03/24(日) 16:35:05.61ID:xnhJaehN よく判らないアドバイスだったな…
勉強・研究しないで突っ込むのはそっちの方が賭けてる感あるし、
すぐに書き終えるなら確かにそういう難しさはないが、
ソフトウェアのプロジェクトって面白いものは大抵長くなると思う。
>>277
Windows環境はWSLではダメなん?
勉強・研究しないで突っ込むのはそっちの方が賭けてる感あるし、
すぐに書き終えるなら確かにそういう難しさはないが、
ソフトウェアのプロジェクトって面白いものは大抵長くなると思う。
>>277
Windows環境はWSLではダメなん?
279デフォルトの名無しさん
2019/03/25(月) 18:54:20.99ID:3963segm >>261
感情表現と言うように感情はあくまでイメージ想起性のもので
文法を持ってないものだと思う。
感情をそのまま言語化なんて人間でもしてないだろ。
あくまで論理的内容の会話文章の表現に感情を想起させる表現を
選んで論理としては同じだけれど得られるイメージが異なる文を
作っているだけだと思う。
そこで文を構成するために選ぶ表現がやたら極端なときに、感情的と評されているだけで。
ていうかおじさんになったしもう無理
感情表現と言うように感情はあくまでイメージ想起性のもので
文法を持ってないものだと思う。
感情をそのまま言語化なんて人間でもしてないだろ。
あくまで論理的内容の会話文章の表現に感情を想起させる表現を
選んで論理としては同じだけれど得られるイメージが異なる文を
作っているだけだと思う。
そこで文を構成するために選ぶ表現がやたら極端なときに、感情的と評されているだけで。
ていうかおじさんになったしもう無理
280デフォルトの名無しさん
2019/03/25(月) 20:49:31.29ID:PHYb4OS3 >>279
得られるイメージが変わってしまうのはコンピュータの制約のせいだよ
fibのイメージをそのまま表現できたら感動するのになあ
この状況ではコンピュータの制約は変えたいがイメージは変えたくない
「論理としては同じだけれど得られるイメージが異なる」という想定は大外れ
得られるイメージが変わってしまうのはコンピュータの制約のせいだよ
fibのイメージをそのまま表現できたら感動するのになあ
この状況ではコンピュータの制約は変えたいがイメージは変えたくない
「論理としては同じだけれど得られるイメージが異なる」という想定は大外れ
281デフォルトの名無しさん
2019/03/25(月) 21:05:17.06ID:8+7iDICf イメージw
お前らあほだろ
お前らあほだろ
282デフォルトの名無しさん
2019/03/25(月) 21:17:58.51ID:PHYb4OS3 コンピュータの制約が悪夢のようだから消去法でイメージ
あほなことしてるだろ
俺達なんだぜこれ
あほなことしてるだろ
俺達なんだぜこれ
283デフォルトの名無しさん
2019/03/25(月) 21:19:23.78ID:3963segm イメージないと妥当性の判断もできんぞ。
これだって
書き込み内容を読んで
内容から推測される人物像をいままでの記憶から割り出して
そういう人物に対してかつてもった心象(イメージ)を
この場合の想定(先入観)として設定して
否定的判断をするという内容を伝達しているだろ
大体こういうプロセスじゃね?
これだって
書き込み内容を読んで
内容から推測される人物像をいままでの記憶から割り出して
そういう人物に対してかつてもった心象(イメージ)を
この場合の想定(先入観)として設定して
否定的判断をするという内容を伝達しているだろ
大体こういうプロセスじゃね?
284デフォルトの名無しさん
2019/03/25(月) 21:58:18.36ID:25q5twYk 数学の世界で効率を全く重視してないわけじゃないからな。無限の速度のCPU上なら同じと見なせるってだけで。
末尾再帰のfibとか数学的だからアーキテクチャ関係なく元の定義より速い。
行列苦手だから書けないが、もっと速い行列バージョンも存在する。
末尾再帰のfibとか数学的だからアーキテクチャ関係なく元の定義より速い。
行列苦手だから書けないが、もっと速い行列バージョンも存在する。
285デフォルトの名無しさん
2019/03/25(月) 22:00:17.95ID:q0PAKLo0 これなんか深かった。結局愚直なコードのままで良かったみたいな
https://haskell-jp.slack.com/archives/C5666B6BB/p1551956556140300
https://haskell-jp.slack.com/archives/C5666B6BB/p1551956556140300
286デフォルトの名無しさん
2019/03/25(月) 22:05:21.04ID:q0PAKLo0 あとこれ。今はコンパイラが賢くなったのでfoldlが遅くなくなったよって話
https://qiita.com/autotaker1984/items/09c5ceaa13e9077f5359
https://qiita.com/autotaker1984/items/09c5ceaa13e9077f5359
287デフォルトの名無しさん
2019/03/25(月) 22:10:40.54ID:25q5twYk288デフォルトの名無しさん
2019/03/25(月) 22:23:26.20ID:PHYb4OS3 全く読んでないがパラダイムと論理は同じではない
パラダイムの限界と論理の限界は同じではない
パラダイムの限界と論理の限界は同じではない
291デフォルトの名無しさん
2019/03/25(月) 23:29:06.55ID:4CvSxgZ7 sum x:xs = x + sum(xs)
は数学っぽく見えるけどアキュムレータ噛ますと途端にループに見える不思議
は数学っぽく見えるけどアキュムレータ噛ますと途端にループに見える不思議
292デフォルトの名無しさん
2019/03/26(火) 02:32:22.40ID:IahGxu4l アキュムレータは余再帰っぽく見える
数学っぽいの反対は余再帰っぽい説
数学っぽいの反対は余再帰っぽい説
293デフォルトの名無しさん
2019/03/26(火) 19:05:26.53ID:8dCBuWSX Haskell知らんでも無意識に >>270 みたいな式を思い描いて
for文とかに落とし込んでる感じじゃね?
n回繰り返すのが昇順か降順かの違いだけで。
Python
def fib(n):
temp = 0
a = 0
b = 1
for i in range(n):
temp = a
a = b
b = b + temp
return a
for i in range(10 + 1):
print(fib(i))
Haskell
main = mapM_ (print.fib) [0..10]
fib n = fib' n 0 1
where
fib' 0 a _ = a
fib' n a b = fib' (n - 1) b (b + a)
for文とかに落とし込んでる感じじゃね?
n回繰り返すのが昇順か降順かの違いだけで。
Python
def fib(n):
temp = 0
a = 0
b = 1
for i in range(n):
temp = a
a = b
b = b + temp
return a
for i in range(10 + 1):
print(fib(i))
Haskell
main = mapM_ (print.fib) [0..10]
fib n = fib' n 0 1
where
fib' 0 a _ = a
fib' n a b = fib' (n - 1) b (b + a)
294デフォルトの名無しさん
2019/03/26(火) 19:25:31.93ID:NbUyZWCM 誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 42162
https://you-can-program.hatenablog.jp
https://you-can-program.hatenablog.jp
295デフォルトの名無しさん
2019/03/31(日) 07:28:40.29ID:S4Tb/ZFO プログラマーのための圏論と言うPDFで公開されてるのが分かりやすい。(上・中・下の三冊)
http://bitterharvest.hatenablog.com/entry/2016/11/24/203021
http://bitterharvest.hatenablog.com/entry/2016/11/24/203021
296デフォルトの名無しさん
2019/04/04(木) 13:40:08.49ID:l5IgkZnr 自然数が射(関数)になっていると言う感覚が分かった気がする。
Haskellで書けないけど、書けるとするなら
1 = 1
1という名前の1を返す引数無しの関数。
Haskellで書けないけど、書けるとするなら
1 = 1
1という名前の1を返す引数無しの関数。
297デフォルトの名無しさん
2019/04/04(木) 13:43:46.44ID:l5IgkZnr 記号的な1を1と書き、概念的な1をチャーチ数で表現するなら
1 = succ zero
1 = succ zero
298デフォルトの名無しさん
2019/04/04(木) 21:34:52.78ID:1azb3qjG トートロジーではないのかね?
299デフォルトの名無しさん
2019/04/05(金) 00:53:58.06ID:OJKC59P7 トートロジーとかチンプンカンプンな高卒なんで。。。
補足説明や訂正があったら勉強になります( ̄^ ̄)ゞ
補足説明や訂正があったら勉強になります( ̄^ ̄)ゞ
300デフォルトの名無しさん
2019/04/05(金) 04:10:43.04ID:sAmwqHSu ラムダ的な自然数は高階関数を使うけど、圏論は冪を使わないことが多い
301デフォルトの名無しさん
2019/04/05(金) 08:37:08.96ID:OJKC59P7 Haskell でもsuccって関数ありましたね。。。
私が
1 = succ zeroで表現したかったのは、どんな数体系でも1と表現される何かという意味での1です。
例えば16進数の10はAと表現されますのですが、
A = 10
とすると10が16進数では10進数の16になるので10進数でも16進数でも10として扱われる概念としてチャーチ数にしたかったのですが、
チャーチ数も含めた全ての数体系で10として扱われる何かを表現したいみたいな。
うーん。。。表現力が乏しくてすみません。
私が
1 = succ zeroで表現したかったのは、どんな数体系でも1と表現される何かという意味での1です。
例えば16進数の10はAと表現されますのですが、
A = 10
とすると10が16進数では10進数の16になるので10進数でも16進数でも10として扱われる概念としてチャーチ数にしたかったのですが、
チャーチ数も含めた全ての数体系で10として扱われる何かを表現したいみたいな。
うーん。。。表現力が乏しくてすみません。
302デフォルトの名無しさん
2019/04/05(金) 18:59:26.73ID:6LVMJo12 本当の所は
Int $ succ Zero
というような頭部正規形で表される関数のシンタックスシュガーだと思う
Int $ succ Zero
というような頭部正規形で表される関数のシンタックスシュガーだと思う
303デフォルトの名無しさん
2019/04/05(金) 21:40:52.25ID:o6EhB3bR HNFは射ではない
そもそも圏論にHNFはない
そもそも圏論にHNFはない
304デフォルトの名無しさん
2019/04/06(土) 02:09:18.76ID:T7Hr9MEJ ・チャーチ数はペアノシステムの1つの実装である
・任意のペアノシステムは(適当な公理のもとで)互いに同型である
みたいな話?
・任意のペアノシステムは(適当な公理のもとで)互いに同型である
みたいな話?
305デフォルトの名無しさん
2019/04/06(土) 03:06:25.41ID:0mL0rlV1 >>303
> HNFは射ではない
> そもそも圏論にHNFはない
こういう表現は間違い
何が射かであり何が圏でないかは、どんな圏を考えているかに依存する
例えばだが、単純な型付λ計算(型の集まりが直積型の構成と関数型の構成について閉じている)に対応する圏、つまり単純な型とそれで型付けされるλ項の成す圏を考えることができる
そこでは、対象は個々の型で、射はλ項だ
そして個々のλ項は、そのλ項の中に現れる自由変数の各々の型の積対象からλ項全体への型という対象への射と考えるというものだ
この場合、λ抽象があるので冪対象が必要になり、従って、この単純な型付λ計算に対応する圏は必然的に積閉包圏というタイプの圏になる
これはいわゆる“categorical type theory”(圏論的型理論)の最も簡単な具体例だ
この圏の場合は単純な型付けに関してwell-typedなλ項は全て射として認められるのでもちろんhead normal formになっているλ項もwell-typedである限りは射だ
> HNFは射ではない
> そもそも圏論にHNFはない
こういう表現は間違い
何が射かであり何が圏でないかは、どんな圏を考えているかに依存する
例えばだが、単純な型付λ計算(型の集まりが直積型の構成と関数型の構成について閉じている)に対応する圏、つまり単純な型とそれで型付けされるλ項の成す圏を考えることができる
そこでは、対象は個々の型で、射はλ項だ
そして個々のλ項は、そのλ項の中に現れる自由変数の各々の型の積対象からλ項全体への型という対象への射と考えるというものだ
この場合、λ抽象があるので冪対象が必要になり、従って、この単純な型付λ計算に対応する圏は必然的に積閉包圏というタイプの圏になる
これはいわゆる“categorical type theory”(圏論的型理論)の最も簡単な具体例だ
この圏の場合は単純な型付けに関してwell-typedなλ項は全て射として認められるのでもちろんhead normal formになっているλ項もwell-typedである限りは射だ
306デフォルトの名無しさん
2019/04/07(日) 09:14:23.15ID:KosuYA7L Haskellの開発環境で、ブレークポイント張って評価中の変数の値を見る、みたいなのって出来ますかね?
Visual Studioのローカルウィンドウ的なの。
普段はSpacemacs使っててREPLで評価しては進め、評価しては進め、みたいな感じでやってます。
Visual Studioのローカルウィンドウ的なの。
普段はSpacemacs使っててREPLで評価しては進め、評価しては進め、みたいな感じでやってます。
307デフォルトの名無しさん
2019/04/18(木) 13:41:44.67ID:iN8m+OWc 並行並列言語Haskellの基本と特徴
https://logmi.jp/tech/articles/321095
2018年11月10日、Haskell-jpが主催するイベント「Haskell Day 2018」が開催されました。
純粋関数型プログラミング言語Haskellをテーマに、Haskellに興味のある人から入門者、
ちょっとできる人まで、様々な層に向けたプレゼンテーションを行った本イベント。実務
から研究まで、幅広いHaskellの事例を共有します。プレゼンテーション「並列並行言語
Haskell 」に登壇したのは、syocy氏。講演資料はこちら (↓)(後略)
https://speakerdeck.com/syocy/bing-lie-bing-xing-yan-yu-haskell
https://speakerd.s3.amazonaws.com/presentations/07d92af9d7aa40bca6cc3959d3f56b28/parallel-and-concurrent.pdf
https://logmi.jp/tech/articles/321095
2018年11月10日、Haskell-jpが主催するイベント「Haskell Day 2018」が開催されました。
純粋関数型プログラミング言語Haskellをテーマに、Haskellに興味のある人から入門者、
ちょっとできる人まで、様々な層に向けたプレゼンテーションを行った本イベント。実務
から研究まで、幅広いHaskellの事例を共有します。プレゼンテーション「並列並行言語
Haskell 」に登壇したのは、syocy氏。講演資料はこちら (↓)(後略)
https://speakerdeck.com/syocy/bing-lie-bing-xing-yan-yu-haskell
https://speakerd.s3.amazonaws.com/presentations/07d92af9d7aa40bca6cc3959d3f56b28/parallel-and-concurrent.pdf
308デフォルトの名無しさん
2019/04/18(木) 23:50:53.53ID:uUujkJat オライリー本の要約だけ?みたいな
309デフォルトの名無しさん
2019/04/25(木) 08:46:13.49ID:xhj9dxYD cabalのnew-から始まるnixスタイルコマンドが出来たからtackつかう意味あまりないですよね
310デフォルトの名無しさん
2019/04/25(木) 09:33:12.75ID:s2usWHpE >>309
v2-build だっけ? よく知らないが stack いらなくなるやつなんだ?
v2-build だっけ? よく知らないが stack いらなくなるやつなんだ?
311デフォルトの名無しさん
2019/04/25(木) 23:59:42.81ID:EXuFo8FY stackageが変わるんですねぇ。stack2も間もなくとか。
https://www.fpcomplete.com/blog/2019/04/stackage-changes-and-stack-2
https://www.fpcomplete.com/blog/2019/04/stackage-changes-and-stack-2
312デフォルトの名無しさん
2019/04/29(月) 10:21:15.20ID:La7Zhpj6 stack or cabal どっちを使えばいいんだ
313デフォルトの名無しさん
2019/04/30(火) 07:55:22.06ID:tedPJGU+ stack!
314デフォルトの名無しさん
2019/04/30(火) 15:29:26.12ID:Dc6+0j7S315デフォルトの名無しさん
2019/04/30(火) 18:00:12.30ID:hygavAeS316デフォルトの名無しさん
2019/04/30(火) 18:03:11.15ID:hygavAeS 入門者に紹介するときはどうすれば?
317デフォルトの名無しさん
2019/05/01(水) 13:06:07.04ID:ALj9hUB7 >>315
自分で情報を得られず、比較できなくて選べないくらいなら、
一長一短なんか考えずに、今好きな方や気になる方を使えば良いんだよ。
stackを長い間使ってきたから今後も使い続ける、でもいいし、
新しいcabalに興味が沸いたからcabal使ってみる、でもいい。
例えばパーサーライブラリ、Webライブラリ、FRPライブラリなどは色々あるけど、
いちいち「一長一短を比較した上で」選ぶ人はそんなに多くないでしょう。
みんな取りあえず何か一つ使ってみて、他に興味が湧いたら浮気してみて、
それからでしょ、比較するのは。
自分で情報を得られず、比較できなくて選べないくらいなら、
一長一短なんか考えずに、今好きな方や気になる方を使えば良いんだよ。
stackを長い間使ってきたから今後も使い続ける、でもいいし、
新しいcabalに興味が沸いたからcabal使ってみる、でもいい。
例えばパーサーライブラリ、Webライブラリ、FRPライブラリなどは色々あるけど、
いちいち「一長一短を比較した上で」選ぶ人はそんなに多くないでしょう。
みんな取りあえず何か一つ使ってみて、他に興味が湧いたら浮気してみて、
それからでしょ、比較するのは。
318デフォルトの名無しさん
2019/05/01(水) 13:20:11.30ID:ALj9hUB7 >>316
両方の一長一短をちゃんと比較して紹介するのは、
記事や本を書くプロや、意欲のある人に任せればいいと思う。
紹介のプロじゃないのなら、自分が好きな方を精一杯アピールすればいい。
それもできずに、初心者にどちらを紹介しようか悩むのなら、順番が違う。
どちらか一方でもアピールできるくらい使い込むのが何よりも先でしょ。
両方の一長一短をちゃんと比較して紹介するのは、
記事や本を書くプロや、意欲のある人に任せればいいと思う。
紹介のプロじゃないのなら、自分が好きな方を精一杯アピールすればいい。
それもできずに、初心者にどちらを紹介しようか悩むのなら、順番が違う。
どちらか一方でもアピールできるくらい使い込むのが何よりも先でしょ。
319デフォルトの名無しさん
2019/05/01(水) 13:42:48.29ID:gsz88y7w まぁこの手の選択にある程度以上責任持って助言するのは難しいんだよな。
少なくとも両方使ってないとどっちがいいとか言えないし。
ほとんどの人が最初に使った方をそのまま使い続けるもんじゃね。
私もcabalしかつかったことないし。
少なくとも両方使ってないとどっちがいいとか言えないし。
ほとんどの人が最初に使った方をそのまま使い続けるもんじゃね。
私もcabalしかつかったことないし。
320デフォルトの名無しさん
2019/05/01(水) 14:03:02.54ID:01/czEVZ 「みんなの見解を聞く」も自分で情報を得る過程のひとつだと思ってるんだが
記名ネットではしにくい無責任方言もここなら言えるでしょ
記名ネットではしにくい無責任方言もここなら言えるでしょ
321デフォルトの名無しさん
2019/05/01(水) 14:23:04.11ID:01/czEVZ まだキチンと検討していないが、自作したツールをbrewとかで公開するとき、ビルドツールを依存に含める必要が出てくると思う。予めどっちかを使うかは決めておきたい。
バージョンを重ねるなかでフラフラ変えるのは避けたい。
あとcabalだとコンパイラを替えるときはghcupなる別ツールを使うの? これだとクロスコンパイラはどうなる。
複数のアーキテクチャのための成果物をビルドするとき、ghcup set ... && cabal build && ghcup set ... && cabal build ... みたいにいちいち指定しないといけないのかしら。
コレを解決するにはghcupにパッチを当てるかcabalを改造するか、スクリプトを書くかするわけだ。その点 stack build はコマンド一発なのに。
俺は年間50時間くらいstackのパッチや関連ツールを書いてきた。このままで行けるならいいが、stack がいずれオワコンになるなら早めに見切りつけて時間節約したい。
新元号が30年続くなら令和中に1500時間も浪費することになるんだぜ。
バージョンを重ねるなかでフラフラ変えるのは避けたい。
あとcabalだとコンパイラを替えるときはghcupなる別ツールを使うの? これだとクロスコンパイラはどうなる。
複数のアーキテクチャのための成果物をビルドするとき、ghcup set ... && cabal build && ghcup set ... && cabal build ... みたいにいちいち指定しないといけないのかしら。
コレを解決するにはghcupにパッチを当てるかcabalを改造するか、スクリプトを書くかするわけだ。その点 stack build はコマンド一発なのに。
俺は年間50時間くらいstackのパッチや関連ツールを書いてきた。このままで行けるならいいが、stack がいずれオワコンになるなら早めに見切りつけて時間節約したい。
新元号が30年続くなら令和中に1500時間も浪費することになるんだぜ。
322デフォルトの名無しさん
2019/05/01(水) 14:53:10.97ID:ALj9hUB7 >>320
> 記名ネットではしにくい無責任方言もここなら言えるでしょ
そんなレスは情報ではないのでは?
ただのノイズでしょ(ノイズの全てがゴミとは言わないが)。
本当に情報を得たいのなら、時間の無駄だよ。
もし、そんなのを参考にどっちか決められるのなら、
初めからルーレットで決めるのと大して変わらないのでは?
「自分で情報を得る」の第一歩は、ビルドツールで一番何がしたいかを決めて、
それが出来るか、やりやすいかを「公式ドキュメント」を見て調べる事だよ。
stackとcabalの公式ドキュメントを見て比較して、
それでも分からない部分をピンポイントでSNSや掲示板などで質問する、
それが二歩目だと思う。
> 記名ネットではしにくい無責任方言もここなら言えるでしょ
そんなレスは情報ではないのでは?
ただのノイズでしょ(ノイズの全てがゴミとは言わないが)。
本当に情報を得たいのなら、時間の無駄だよ。
もし、そんなのを参考にどっちか決められるのなら、
初めからルーレットで決めるのと大して変わらないのでは?
「自分で情報を得る」の第一歩は、ビルドツールで一番何がしたいかを決めて、
それが出来るか、やりやすいかを「公式ドキュメント」を見て調べる事だよ。
stackとcabalの公式ドキュメントを見て比較して、
それでも分からない部分をピンポイントでSNSや掲示板などで質問する、
それが二歩目だと思う。
323デフォルトの名無しさん
2019/05/01(水) 16:46:41.64ID:fQT4rWd7 伸びてると思ったら。。。
今の所stackかな。
cabalは依存関係で過去に評判悪かったから、新しいのの評判が固まったらかな。
今の所stackかな。
cabalは依存関係で過去に評判悪かったから、新しいのの評判が固まったらかな。
324デフォルトの名無しさん
2019/05/02(木) 10:15:34.23ID:PPz8MGJz >>322
調査を並行してやっちゃいけない理由はないでしょ。聞くだけならタダやし。
スレ民の意見をノイズだなんて思ったことないよ。自分にない視点や個人的使用感、気づきにくい落とし穴を教えてもらえるかも。
俺の雑感はstackは不備だけでなくバグも多かった気がする。.stack-workを消したらビルドが直ったみたいなことが何回かあったと思う。
stackのメリットは、
(ghcupの方針が変わらないなら)コンパイラの導入まで自動でやってくれるので、例えばHaskellスクリプトを書いてシェバンにstack、
以降に依存ライブラリを書いておけばいつでもどこでも動く(HackageとStackageが活きてるかぎり)、必要なものを都度自動で用意してくれる。
stackのデメリットは、
設定ファイルが多すぎる。プロジェクトレベルでは stack.yaml, package.yaml, Hoobar.cabal
と、どれに何を書くかが判りづらい、いちいち引っかかる。
調査を並行してやっちゃいけない理由はないでしょ。聞くだけならタダやし。
スレ民の意見をノイズだなんて思ったことないよ。自分にない視点や個人的使用感、気づきにくい落とし穴を教えてもらえるかも。
俺の雑感はstackは不備だけでなくバグも多かった気がする。.stack-workを消したらビルドが直ったみたいなことが何回かあったと思う。
stackのメリットは、
(ghcupの方針が変わらないなら)コンパイラの導入まで自動でやってくれるので、例えばHaskellスクリプトを書いてシェバンにstack、
以降に依存ライブラリを書いておけばいつでもどこでも動く(HackageとStackageが活きてるかぎり)、必要なものを都度自動で用意してくれる。
stackのデメリットは、
設定ファイルが多すぎる。プロジェクトレベルでは stack.yaml, package.yaml, Hoobar.cabal
と、どれに何を書くかが判りづらい、いちいち引っかかる。
325デフォルトの名無しさん
2019/05/02(木) 12:34:35.03ID:WAiWu/DB326デフォルトの名無しさん
2019/05/02(木) 13:13:18.93ID:PPz8MGJz >>325 前半は反論したし、後半は批判してないですよ。
327デフォルトの名無しさん
2019/05/03(金) 01:40:50.69ID:nJ30PKpf 凄いH本の中国語版見る機会があって、
漢字の用法がカタカナ語より
しっくりすると思ったんですけどどうでしょうか。
模式: パターン
門衛: ガード
類型類: 型クラス
さすがにモナドは漢字翻訳難しいみたいですが。
漢字の用法がカタカナ語より
しっくりすると思ったんですけどどうでしょうか。
模式: パターン
門衛: ガード
類型類: 型クラス
さすがにモナドは漢字翻訳難しいみたいですが。
328デフォルトの名無しさん
2019/05/03(金) 06:21:38.43ID:hYhvNKlL その程度のカタカナがしっくり来なかった人生を反省するんだ
329デフォルトの名無しさん
2019/05/03(金) 09:01:46.98ID:gvxbExu1 慣れとしっくりくるのは別物だけどな
無意味刺激と有意味刺激、表音文字と表意文字に対する認知は先天性の個人差があるんだからあまり他人の人生なんて分かりもしないものに言及するべきではない
どちらにせよ今の中国は学術用語を積極的に訳する文化ではあるよね
Haskellに限らずclassや他の用語もそれに類した漢字が用いられてそう
ただこれも漢字の意味が時代によって変化してくると正しい用語認識を阻害しうるのは現代日本でいくらか見られているし、一長一短と個人差だね
無意味刺激と有意味刺激、表音文字と表意文字に対する認知は先天性の個人差があるんだからあまり他人の人生なんて分かりもしないものに言及するべきではない
どちらにせよ今の中国は学術用語を積極的に訳する文化ではあるよね
Haskellに限らずclassや他の用語もそれに類した漢字が用いられてそう
ただこれも漢字の意味が時代によって変化してくると正しい用語認識を阻害しうるのは現代日本でいくらか見られているし、一長一短と個人差だね
330デフォルトの名無しさん
2019/05/03(金) 10:47:01.08ID:4xTnxfhe かつてアルゴリズムを算法とかコンパイルを翻訳とか
一部で言っていましたね。
モナドアクションを算法と訳すならモナドは法かぁ
などと連想してみました。
一部で言っていましたね。
モナドアクションを算法と訳すならモナドは法かぁ
などと連想してみました。
331デフォルトの名無しさん
2019/05/03(金) 11:01:45.26ID:aPBgVjEU 漢字に訳する場合どっか権威のあるところが決める必要があるよね
そういうところがめんどくさい
そういうところがめんどくさい
332デフォルトの名無しさん
2019/05/03(金) 12:09:36.96ID:4xTnxfhe 大陸だと結構あちこちで勝手に翻訳されたり
輸入されていずれ収斂されていくっていう
感じだった。
日本でも官公庁の訳語が定着しないことも
多いよね。
輸入されていずれ収斂されていくっていう
感じだった。
日本でも官公庁の訳語が定着しないことも
多いよね。
333デフォルトの名無しさん
2019/05/03(金) 12:40:40.57ID:eVcW5sZJ 流れも読まずminからmaxまでのランダムな数のリスト(要素数n)を得る関数作って見た。
takerand _ _ xs 0 = return xs
takerand mn mx xs n = do
x <- randomRIO (mn, mx)
takerand mn mx (x:xs) (n - 1)
使い方は
rs <- takerand 1 6 [] 10
これで1ー6までのランダムな数が10個入ったリストが手に入る。
takerand _ _ xs 0 = return xs
takerand mn mx xs n = do
x <- randomRIO (mn, mx)
takerand mn mx (x:xs) (n - 1)
使い方は
rs <- takerand 1 6 [] 10
これで1ー6までのランダムな数が10個入ったリストが手に入る。
334デフォルトの名無しさん
2019/05/03(金) 12:41:50.16ID:eVcW5sZJ 流れも読まずminからmaxまでのランダムな数のリスト(要素数n)を得る関数作って見た。
takerand _ _ xs 0 = return xs
takerand mn mx xs n = do
x <- randomRIO (mn, mx)
takerand mn mx (x:xs) (n - 1)
使い方は
rs <- takerand 1 6 [] 10
これで1ー6までのランダムな数が10個入ったリストが手に入る。
takerand _ _ xs 0 = return xs
takerand mn mx xs n = do
x <- randomRIO (mn, mx)
takerand mn mx (x:xs) (n - 1)
使い方は
rs <- takerand 1 6 [] 10
これで1ー6までのランダムな数が10個入ったリストが手に入る。
335デフォルトの名無しさん
2019/05/03(金) 14:37:49.43ID:af96C5Xg >>334
それなら、getStdGen と randomRs と take でいいのでは?
takerand mn mx n = getStdGen >>= return . take n . randomRs (mn, mx)
あるいは
takerand mn mx n = take n . randomRs (mn, mx) <$> getStdGen
それなら、getStdGen と randomRs と take でいいのでは?
takerand mn mx n = getStdGen >>= return . take n . randomRs (mn, mx)
あるいは
takerand mn mx n = take n . randomRs (mn, mx) <$> getStdGen
336デフォルトの名無しさん
2019/05/03(金) 14:52:14.89ID:af96C5Xg337デフォルトの名無しさん
2019/05/04(土) 06:36:55.99ID:S+NYX3By338デフォルトの名無しさん
2019/05/04(土) 09:34:13.31ID:6lRHaHYp Arrowised FRP を 矢矧のFRP とかいうのは好き
339デフォルトの名無しさん
2019/05/04(土) 09:36:30.32ID:6lRHaHYp 型クラスの訳語 類型類 は、kindの 類 とごっちゃになるな、と思ったけど、
kindは 種 が主流なのか
kindは 種 が主流なのか
340デフォルトの名無しさん
2019/05/04(土) 17:11:10.97ID:MNo33vgu >>339
主流というか、それ以外に聞いたことがない
主流というか、それ以外に聞いたことがない
341デフォルトの名無しさん
2019/05/04(土) 18:12:27.03ID:6lRHaHYp342デフォルトの名無しさん
2019/05/06(月) 16:30:54.25ID:gerN8CWz すみませんHaskellでアート芸術方面のプログラミングをしたい場合
既存の表示用ライブラリは導入からして難しそうな印象があるので
表示はProcessingに任せるという方法を考えていますが、
http://hackage.haskell.org/package/processing-for-haskell
もしそういう方面に詳しい人がいましたら
それについての助言を頂きたいです。
既存の表示用ライブラリは導入からして難しそうな印象があるので
表示はProcessingに任せるという方法を考えていますが、
http://hackage.haskell.org/package/processing-for-haskell
もしそういう方面に詳しい人がいましたら
それについての助言を頂きたいです。
343デフォルトの名無しさん
2019/05/06(月) 16:46:03.96ID:jvaKyQ4h >>342
なにを助言してほしいのか具体的に明確に言ってくれ。
なにを助言してほしいのか具体的に明確に言ってくれ。
344デフォルトの名無しさん
2019/05/06(月) 21:07:46.31ID:gerN8CWz >>343
説明が不十分ですみません。
アート芸術のプログラミングを行う場合
表示は既存ライブラリは使わずに
Haskell-Processing連携ライブラリを使って
データ処理と表示を切り分けた方が
簡単なのではないだろうかという質問でした。
https://github.com/anton-k/processing-for-haskell/blob/master/tutorial/QuickStartForProcessingers.md
表示はProcessingで行います。
説明が不十分ですみません。
アート芸術のプログラミングを行う場合
表示は既存ライブラリは使わずに
Haskell-Processing連携ライブラリを使って
データ処理と表示を切り分けた方が
簡単なのではないだろうかという質問でした。
https://github.com/anton-k/processing-for-haskell/blob/master/tutorial/QuickStartForProcessingers.md
表示はProcessingで行います。
345デフォルトの名無しさん
2019/05/06(月) 23:14:35.12ID:jvaKyQ4h >>344
データ処理と表示処理を切り分けた方が開発が楽になるのはその通り。
でも、グラフィックス ライブラリに何を使うかと、
楽に切り分けできるかどうかは、一般には関係ない。
特に haskell のグラフィックス ライブラリはたいてい EDSL 形式になっているから、
どれを使おうが、切り分けの楽さは大して変わらない。
後はもうライブラリの表現力が求めるレベルにあるかどうかと、
個人の経験や慣れ、趣味の問題だ。
Processing に慣れているなら processing-for-haskell でいいだろう。
個人的には gross が好き。
ところで、既存のライブラリって何だ?
processing-for-haskell は 2016 年でアップデートが止まってるが、
これは既存ではないの?
データ処理と表示処理を切り分けた方が開発が楽になるのはその通り。
でも、グラフィックス ライブラリに何を使うかと、
楽に切り分けできるかどうかは、一般には関係ない。
特に haskell のグラフィックス ライブラリはたいてい EDSL 形式になっているから、
どれを使おうが、切り分けの楽さは大して変わらない。
後はもうライブラリの表現力が求めるレベルにあるかどうかと、
個人の経験や慣れ、趣味の問題だ。
Processing に慣れているなら processing-for-haskell でいいだろう。
個人的には gross が好き。
ところで、既存のライブラリって何だ?
processing-for-haskell は 2016 年でアップデートが止まってるが、
これは既存ではないの?
346sage
2019/05/06(月) 23:44:49.55ID:gerN8CWz >>345
ありがとうございます。理解しました。
参考にしたのが School of Expression だったので
情報が古くprocessing-for-haskellが
最新の物と思えて勘違いしてました。
ありがとうございます。理解しました。
参考にしたのが School of Expression だったので
情報が古くprocessing-for-haskellが
最新の物と思えて勘違いしてました。
347デフォルトの名無しさん
2019/05/07(火) 14:46:19.40ID:A4BDuZrS diagrams を使ってた。
348デフォルトの名無しさん
2019/05/08(水) 18:25:39.72ID:Sfv9Blmq349デフォルトの名無しさん
2019/05/08(水) 22:03:23.22ID:Et3ZqY/0 >>348
「haskellで」アート芸術方面のプログラミングをするには、という質問だと思う。
ジェネラティブアートなんか haskell にもってこいじゃないかな。
もちろん、Processing の得意分野でもあるんだが、
宣言的に書ける haskell もけっこうマッチするのでは?
全て型プログラミングで生成とかもできそう。
「haskellで」アート芸術方面のプログラミングをするには、という質問だと思う。
ジェネラティブアートなんか haskell にもってこいじゃないかな。
もちろん、Processing の得意分野でもあるんだが、
宣言的に書ける haskell もけっこうマッチするのでは?
全て型プログラミングで生成とかもできそう。
350デフォルトの名無しさん
2019/05/12(日) 15:06:12.68ID:11og9P/f f xs = let g = \x -> 2 * x in map g xs
この場合、ラムダは最初に一回メモリにアロケートされて g に束縛されるよね。
でも、もしかして、
f xs = map (\x -> 2 * x) xs
これって、f が呼ばれる度に map の第一引数のコード(ラムダ)がメモリにアロケートされるの?
この場合、ラムダは最初に一回メモリにアロケートされて g に束縛されるよね。
でも、もしかして、
f xs = map (\x -> 2 * x) xs
これって、f が呼ばれる度に map の第一引数のコード(ラムダ)がメモリにアロケートされるの?
351デフォルトの名無しさん
2019/05/12(日) 21:06:22.80ID:yBh745ei クロージャにしなくてもいいラムダはただの関数として扱われるんじゃない?
というか上のコードならセーフっていうのはgを使いまわしてくれるから?
そんな気の利いた処理系なら下のラムダも使いまわしてくれそうだけど
というか上のコードならセーフっていうのはgを使いまわしてくれるから?
そんな気の利いた処理系なら下のラムダも使いまわしてくれそうだけど
352デフォルトの名無しさん
2019/05/12(日) 21:12:09.17ID:x0KgamNa その辺り、実際にどんな実行コードが生成されるかに関しては、
コンパイラ(GHC)に聞いてくれ、としか言いようがない
インライン展開とかクロージャ変換といったコンパイラ技法を学ぶことを勧める
関数型言語だからTiger本とか
コンパイラ(GHC)に聞いてくれ、としか言いようがない
インライン展開とかクロージャ変換といったコンパイラ技法を学ぶことを勧める
関数型言語だからTiger本とか
353デフォルトの名無しさん
2019/05/13(月) 01:00:48.68ID:Jw01/DTu ラムダは何も簡約しなくても最初からWHNFじゃないのか
最初からWHNFならサンクとか不要だから普通の言語と同じでいい
最初からWHNFならサンクとか不要だから普通の言語と同じでいい
354デフォルトの名無しさん
2019/05/13(月) 23:41:36.79ID:kVO0yWqO355デフォルトの名無しさん
2019/05/14(火) 19:41:06.85ID:B2OD/x5C なるほど、納得できた。
これからは安心して引数にラムダを直接書ける。
ありがとう。
これからは安心して引数にラムダを直接書ける。
ありがとう。
356デフォルトの名無しさん
2019/05/23(木) 06:24:49.40ID:Jx74KNT2 mtl によるモナド合成はモナド則を保存しない
マジかよ失望しました。mtl は窓から投げ捨てます
マジかよ失望しました。mtl は窓から投げ捨てます
357デフォルトの名無しさん
2019/05/23(木) 17:37:28.82ID:4B/apNfB 動的型付けに比べて静的型付けの方が優れている、は常に真?
実はHaskellで動的プログラミングをやる話を読んで、
あれっコレ意外といいじゃんと思ってしまったんだ。
実はHaskellで動的プログラミングをやる話を読んで、
あれっコレ意外といいじゃんと思ってしまったんだ。
358デフォルトの名無しさん
2019/05/23(木) 18:42:06.90ID:ATxGBnNk 次にお前らは『優れているを定義してくれ』と言うッ!
359デフォルトの名無しさん
2019/05/24(金) 01:05:05.82ID:jCONIFNW 任意の言語に丸投げするシェルスクリプトはズル
文字列をevalするやつもズル
ズルをする必要がない言語は優れている
どうせこんな感じだろうと思ってる
文字列をevalするやつもズル
ズルをする必要がない言語は優れている
どうせこんな感じだろうと思ってる
360デフォルトの名無しさん
2019/05/24(金) 04:51:31.33ID:3xUJmLCM いくつかの基準が思いつく。
速い・短い・アシストが手厚い・理解しやすい・バグが混入しにくい…
>>359
「ズル」には悪い、の意味が予め含まれていると思うので納得できない。
evalを用いた場合に比べて静的型の解決の方が優れているのを示す必要があるでしょう。
速い・短い・アシストが手厚い・理解しやすい・バグが混入しにくい…
>>359
「ズル」には悪い、の意味が予め含まれていると思うので納得できない。
evalを用いた場合に比べて静的型の解決の方が優れているのを示す必要があるでしょう。
361デフォルトの名無しさん
2019/05/24(金) 08:28:17.80ID:jCONIFNW 格闘技ですら、反則には反則負けという意味が含まれている
362デフォルトの名無しさん
2019/05/24(金) 09:32:47.08ID:3xUJmLCM 含まれてないと思うし、Haskellに関係ない。
363デフォルトの名無しさん
2019/05/24(金) 11:18:44.54ID:YDCPM0sO sequence_の使い所が分からん。。。
mapM_使った方が短くなるし。
うーむ。。。
渡すリストにIOな関数含められる=IOな関数を使う
リスト内包表記も使えるのは良いけど、mapM_のが簡潔。
import Data.List
import System
main = mapM_ put $ zip hellos marks
-- sequence_ [put (x,y) | (x,y) <- zip hellos marks]
hellos = (cycle.tails) "Hello World!!"
marks = cycle ["/","|","\\","--"]
put (x,y) = do putStrLn (x ++ "\n" ++ y)
mapM_ (\_ -> putStr "") [1..50000]
system "clear"
mapM_使った方が短くなるし。
うーむ。。。
渡すリストにIOな関数含められる=IOな関数を使う
リスト内包表記も使えるのは良いけど、mapM_のが簡潔。
import Data.List
import System
main = mapM_ put $ zip hellos marks
-- sequence_ [put (x,y) | (x,y) <- zip hellos marks]
hellos = (cycle.tails) "Hello World!!"
marks = cycle ["/","|","\\","--"]
put (x,y) = do putStrLn (x ++ "\n" ++ y)
mapM_ (\_ -> putStr "") [1..50000]
system "clear"
364デフォルトの名無しさん
2019/05/24(金) 11:19:15.22ID:YDCPM0sO hellos = (cycle.tails) "Hello World!!"
marks = cycle ["/","|","\\","--"]
put (x,y) = do putStrLn (x ++ "\n" ++ y)
mapM_ (\_ -> putStr "") [1..50000]
system "clear"
marks = cycle ["/","|","\\","--"]
put (x,y) = do putStrLn (x ++ "\n" ++ y)
mapM_ (\_ -> putStr "") [1..50000]
system "clear"
365デフォルトの名無しさん
2019/05/24(金) 14:25:55.92ID:3xUJmLCM >>363
モナディックアクションを構造に入れて使うとき重宝するよ。
main = sequence_ . (map (putStr "log:" >>)) $ [print "hoo",putStr "bar"]
個々のアクションを好きに調整できる(例ではそれぞれに前処理を足した)。
モナディックアクションを構造に入れて使うとき重宝するよ。
main = sequence_ . (map (putStr "log:" >>)) $ [print "hoo",putStr "bar"]
個々のアクションを好きに調整できる(例ではそれぞれに前処理を足した)。
366デフォルトの名無しさん
2019/05/24(金) 18:49:41.11ID:aewo4dFz367デフォルトの名無しさん
2019/05/24(金) 18:55:43.73ID:aewo4dFz 別件なのですが、俺俺Eq型クラス(MyEq)を作って見ているのですが、
HugsだとNum a型のインスタンスを作れるのに、GHCだとエラーが出ます。
経験ある方、いらっしゃいますでしょうか?
main = do print $ 1 === 1
print $ 1 /== 1
print $ 1 === 2
print $ 1 /== 2
class MyEq a where
(===),(/==) :: a -> a -> Bool
x === y = not (x /== y)
x /== y = not (x === y)
instance (Num a) => MyEq a where
x === x' = isZero (x - x')
x /== x' = not (x === x')
isZero 0 = True
isZero _ = False
GHCだと全ての型をインスタンスにしろ的なエラーメッセージが出ます。。。
スマートな方法があれば。。。
HugsだとNum a型のインスタンスを作れるのに、GHCだとエラーが出ます。
経験ある方、いらっしゃいますでしょうか?
main = do print $ 1 === 1
print $ 1 /== 1
print $ 1 === 2
print $ 1 /== 2
class MyEq a where
(===),(/==) :: a -> a -> Bool
x === y = not (x /== y)
x /== y = not (x === y)
instance (Num a) => MyEq a where
x === x' = isZero (x - x')
x /== x' = not (x === x')
isZero 0 = True
isZero _ = False
GHCだと全ての型をインスタンスにしろ的なエラーメッセージが出ます。。。
スマートな方法があれば。。。
368デフォルトの名無しさん
2019/05/24(金) 20:57:13.04ID:SgRJwbG9369デフォルトの名無しさん
2019/05/25(土) 02:52:58.92ID:qv11a0DJ■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「“なり得る”って言っただけだから…」高市早苗“存立危機”答弁後に漏らした本音 ★2 [Hitzeschleier★]
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で ★4 [お断り★]
- 中国が水産物の輸入停止、首相答弁撤回を要求…中国共産党機関紙「輸入停止は一つのシグナルにすぎない」 [ぐれ★]
- 高市首相「台湾有事」発言引き出した「立憲・岡田克也氏」に聞いた質問の真意「これはマズイ発言だと」少しずらしてみたが焼け石に水 ★2 [ぐれ★]
- 【日本産水産物の事実上輸入停止】ホタテ業者が嘆き「完全に逆戻り」 中国への依存度を見直す決断「同じように戻そうとは思わない」 [ぐれ★]
- 【株価】日経平均、上げ幅一時2000円超 5万円台を回復 [蚤の市★]
- 高市コイン157円 [834922174]
- 【高市 歳の差凄い】 10代前半の少女。 71歳男性とハメ撮りSEX。 男性「やっていません」 逮捕 [485983549]
- 🏡PUNCHマッチ💥🥊😅🥊💥超重量級決戦🏡
- 【悲報】ネトウヨが考えた「2050年の日本」急速に現実味を増すwwww [177316839]
- 10年国債 1.8%突破 もう終わりだよこの国 [402859164]
- 武井壮、ブチギレ。💢(クリティカルヒット) [153490809]
