2ch勢い総合ランキング

「PC等」カテゴリ > 「プログラム」板

関数型プログラミング言語Haskell Part32 (355)

【pc】

関数型プログラミング言語Haskell Part32 (355)


1 デフォルトの名無しさん

ageteoff

2019/01/29(火) 09:05:47.90 ID:gJP/u7IJ

関数型プログラミング言語 Haskell について語るスレです。

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

前スレ
関数型プログラミング言語Haskell Part31
https://mevius.5ch.net/test/read.cgi/tech/1506447188/

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

関数型プログラミング言語Haskell Part32 (355)


216 デフォルトの名無しさん
2019/03/03(日) 22:40:24.54 ID:iXSrdfon

条件を満たす限り畳み込むfoldWhileみたいな関数がないのはなぜ?
scanとtakeWhileで出来なくもないけど無駄なリストが生成されちゃうよね

217 デフォルトの名無しさん
2019/03/04(月) 10:06:50.76 ID:P5wfz8lO

scanした後はlast.takeWhileとかだと思いますがfusionされるので作られません

218 デフォルトの名無しさん
2019/03/04(月) 11:18:43.16 ID:yQsTNF7X

217
ありがとうございます
fusion調べてみます

219 デフォルトの名無しさん
2019/03/09(土) 09:51:28.74 ID:KBqn1KqM

haskell入門ほぼ読んだけどちょっと物足りなくてもうすこしhaskell勉強したい欲がある(目的は競プロとか月並みにaiとか)
なんかええ本ある? 数学の高速なライブラリとか圏論、モナドの解説あるやつで(数学は拒絶反応しない)
get programming with haskellとか並行並列とか多少気になってるけどどう?

220 デフォルトの名無しさん
2019/03/09(土) 10:30:48.34 ID:Vn/el/At

初心者を抜けた後、実践へ進みたいのなら幾つか勧められる本はある。

しかし、更なる勉強がしたいのなら、勧められる本はない。
初心者用か、初心者を抜けたばかりの者にはまだ難しい本しかない。
特に君の目的(競プロやAI)に叶う本は今のところ皆無だ。

なので、ネットを漁れ。

あと質問がやや曖昧で、何を求めているのか分からん。
数学の高速なライブラリの何を求めてる?
それを自作できる知識なのか?
活用する知識なのか?
もしくは、仕組みが知りたい具体的なライブラリでもあるのか?

圏論やモナドにしても然り。
それらの何が知りたいのか具体的に言ってみ。

221 デフォルトの名無しさん
2019/03/09(土) 11:02:47.64 ID:KBqn1KqM

220
具体的には数学書のような理論本ですね 今のところ全然数学臭さがないので(コンピュータとは乖離してるかもしれないけど)
速度に関しては、命令型の書き方でないのでどうすれば速度が出る書き方が出来るかが一番興味あります
ai,競プロはやるとしたときの足掛かりが気になりました
このみっつのどれかが掘り下げられれば幸いです。

222 デフォルトの名無しさん
2019/03/09(土) 11:19:03.37 ID:SKFKP+LU

THUNKとかWHNFとかだろうけど
俺もここら辺の本とかあるなら読んでみたい

223 デフォルトの名無しさん
2019/03/09(土) 11:28:44.92 ID:Vn/el/At

221
「数学書のような理論本」 悪いが意味が分からん。
具体的に「何が知りたいのか」を言ってくれ。
理論と言うのが大雑派すぎる。

速度を上げる方法を学びたいのなら、
・Haskell High Performance Programming
・関数プログラミング 珠玉のアルゴリズムデザイン
この2つが正にうってつけだが、
「Haskell入門をほぼ読んだ」段階では挫折しそう。

AI や競プロは前レスでも言ったが本は無い。
AI は reinforcement leaning や deep leaning など技術範囲を絞ったワードと
haskell を組み合わせたキーワードでネット検索。

競プロは実際の競技で提出されたソースをたくさん読んで真似しろ。

224 デフォルトの名無しさん
2019/03/09(土) 11:50:40.66 ID:KBqn1KqM

223
どうもありがとうございます。図書館で覗いてみます
具体的には、数学との関わりを体系だって書いてる書籍を探してましたが、そりゃ個々のキーワードで探す方が手っ取り早くて色々漁れますわな

225 デフォルトの名無しさん
2019/03/09(土) 13:09:34.75 ID:HqfcKPNw

競プロにHaskellはどうなんだ…?
良くわからんけどSTモナド使いまくる感じになるのかな
あるいは珠玉のアルゴリズムを理解仕切った超人達の集まりなのか

226 デフォルトの名無しさん
2019/03/09(土) 13:43:47.24 ID:w1EXpOnc

221,223
珠玉のアルゴリズムデザインへの入門としては同じ著者の
『Haskellによる関数プログラミングの思考法』
(旧版名は『関数プログラミング入門 ―Haskellで学ぶ原理と技法―』)
がいいと思う
他の入門書よりは数学色が強いし
等式変形によって効率を改善していく運算も割と丁寧に扱っていると思う

あとは『純粋関数型データ構造』とかも参考になるかも?
ただ競プロならSTRefとかSTUArrayとかに習熟するほうが
手っ取り早いし有力かも

227 デフォルトの名無しさん
2019/03/09(土) 13:49:45.09 ID:Vn/el/At

225 226
例えば AtCoder の参加者のコードを見てみると分かるが、
STモナドなんて使ってるヤツはいない。
そもそも、haskell に慣れたら、STモナドなんて使いにくいだけだろ。
競プロみたいな短く速いコードを書く必要があるなら尚更。

珠玉本を理解しきった者かどうかは知らんが、
極端に短いコードで解いてくるヤツは、
どちらかといえば数学の知識が豊富なんじゃないかな。
問題文を数学の世界に落とし込む事に長けているように見える。

コンテストにもよるが、競技プログラミングは
個人的にはアルゴリズム力よりも数学力がより大事だと思ってる。
例えば Project Euler の高番号問題をシンプルに解けるヤツは競技も強そう。

228 デフォルトの名無しさん
2019/03/09(土) 15:47:05.82 ID:KBqn1KqM

226 227
どうもありがとうございます。StateとかSTは内部処理はよくわからないけど便利なので使い方おぼえておきたいとこですね

229 デフォルトの名無しさん
2019/03/09(土) 20:50:02.63 ID:2ErVpr0y

珠玉本難解すぎる
登場する学生達が天才過ぎる

230 デフォルトの名無しさん
2019/03/10(日) 04:06:11.50 ID:0rKUQSsg

229
それでも理解したいのなら質問すればいい

231 デフォルトの名無しさん
2019/03/14(木) 01:49:52.87 ID:pUnQtnNt

instance head ってよく聞くけど、
これは instance 宣言のどの部分のこと?

例えば次の宣言の場合
instance (Foo a) => Bar (Baz a b) | a -> b where

・(Foo a)
・Bar (Baz a b)
・Bar (Baz a b) | a -> b
・instance キーワードと where キーワードの間の全部
・その他

どれ?

232 デフォルトの名無しさん
2019/03/14(木) 02:00:29.34 ID:pUnQtnNt

231
すまん、instance 宣言に関数従属は無いよな。

改めて、

instance (Foo a) => Bar (Baz a) where

この例だとどこが instance head なんだ?

233 デフォルトの名無しさん
2019/03/14(木) 08:32:21.91 ID:pUnQtnNt

231
自己解決した。

instance head は => より右側かつ where より左側の部分だった。

スレ汚してすまない。

234 デフォルトの名無しさん
2019/03/20(水) 22:23:43.02 ID:GM5azBbl

HaskellのGUI(Gtk2hs)でカウンター作ってみた。

import Graphics.UI.Gtk

main = do
initGUI
window <- windowNew
set window [windowTitle := "counter", containerBorderWidth := 10]
mainbox <- vBoxNew True 5
containerAdd window mainbox
label <- labelNewWithMnemonic "0"
boxPackStart mainbox label PackNatural 0
countbtn <- buttonNewWithLabel "Count"
clrbtn <- buttonNewWithLabel "Clear"
boxPackStart mainbox countbtn PackNatural 0
boxPackEnd mainbox clrbtn PackNatural 0

widgetShowAll window
onClicked countbtn (labelGetLabel label ">= \n -> labelSetText label (show (1 + (read n))))
onClicked clrbtn (labelSetText label "0")
onDestroy window mainQuit
mainGUI

235 デフォルトの名無しさん
2019/03/20(水) 22:24:12.70 ID:GM5azBbl

label <- labelNewWithMnemonic "0"
boxPackStart mainbox label PackNatural 0
countbtn <- buttonNewWithLabel "Count"
clrbtn <- buttonNewWithLabel "Clear"
boxPackStart mainbox countbtn PackNatural 0
boxPackEnd mainbox clrbtn PackNatural 0

widgetShowAll window
onClicked countbtn (labelGetLabel label ">= \n -> labelSetText label (show (1 + (read n))))
onClicked clrbtn (labelSetText label "0")
onDestroy window mainQuit
mainGUI

236 デフォルトの名無しさん
2019/03/20(水) 22:24:33.45 ID:GM5azBbl

boxPackStart mainbox countbtn PackNatural 0
boxPackEnd mainbox clrbtn PackNatural 0

widgetShowAll window
onClicked countbtn (labelGetLabel label ">= \n -> labelSetText label (show (1 + (read n))))
onClicked clrbtn (labelSetText label "0")
onDestroy window mainQuit
mainGUI

237 デフォルトの名無しさん
2019/03/21(木) 05:11:02.25 ID:EnD5r7yP

コマンドラインでエンターを押すごとに数字が増えていく(Ctrl+C押すまで止まらない)
Haskellコード

main = mapM_ (\n -> print n "> getLine) [0..]


out:
0
1
2
3
4

238 デフォルトの名無しさん
2019/03/21(木) 22:17:24.35 ID:2nCrXVEC

急にどしたんww

gtk2hsのドキュメントがHackageから消えてるのは気のせい?

239 デフォルトの名無しさん
2019/03/21(木) 22:23:19.66 ID:NO+0ze73

なかなかGHC8.8出ないね

240 デフォルトの名無しさん
2019/03/21(木) 23:42:33.25 ID:42YMN3yF

無限ポップアップ上げるやつ現れないとは高尚なスレ
リストで遅延評価使うのがなかなかハスケルっぽい

241 デフォルトの名無しさん
2019/03/22(金) 06:11:43.80 ID:t/nkQ3ne

一応、カウンターみたいなのは純粋関数型言語には作れない言われてたから、作ってみた。
確かにi++みたいな事は出来ないが、違う方法で参照透明性を確保しつつ実現出来ると実感。
(個人的にHaskellには副作用はあると考えているが、参照透明性は崩れないとも考えている)

242 デフォルトの名無しさん
2019/03/22(金) 07:23:09.19 ID:hntcvuv1

そりゃ副作用はあるよ。
じゃなきゃIO処理できない。

haskell の特徴は純粋な関数から副作用のある関数を呼べないこと。

243 デフォルトの名無しさん
2019/03/22(金) 07:32:41.43 ID:t/nkQ3ne

うい。
そう言う仕組みになってるくせに、IOな関数も扱いとしては純粋な関数と同じ扱いなのが気に入ってます。
(型に気をつけていれば自然とそうなるし、普通にprint関数と純粋関数を関数合成出来るのが好き)

244 デフォルトの名無しさん
2019/03/22(金) 07:54:45.66 ID:chPt0Ign

純粋関数型言語でカウンタが作れないというのは、
同じ関数を呼び出した結果がカウントアップされるような関数のこと。
pythonで書くとこんな感じ。
">> def create_counter():
  n = 0
  def counter():
    nonlocal n
    n += 1
    return n
  return counter

">> counter = create_counter()
">> counter()
1
">> counter()
2

245 デフォルトの名無しさん
2019/03/22(金) 08:09:16.10 ID:t/nkQ3ne

244
そうなんですが、純粋関数型言語の場合、その関数を何回呼び出したのかカウントする関数を作るみたいな視点の切り替えで対処するのではと。
つまり自身のファイルを読み込んで自身(counter関数)を

a = counter
b = counter

a = 1
b = 2

に置き換える関数なら作れます。

欲しいのは結果であり、動作ではなく結果が同じなら良いと言う解釈です。

246 デフォルトの名無しさん
2019/03/22(金) 10:06:06.24 ID:t/nkQ3ne

終了やカウントクリアに対応してみた。

import System.Exit

main = do putStrLn "quit code is 'q', count clear code 'c'"
mapM_ (\n -> print n "> getLine ">= f) [0..]

f "quit" = exitWith ExitSuccess
f "clear" = main
f _ = return ()

247 デフォルトの名無しさん
2019/03/22(金) 11:13:34.22 ID:RqYJx/o4

副作用もカウンタもGUIもHaskellでできる (Haskellで作れるとは言っていない)

248 デフォルトの名無しさん
2019/03/22(金) 14:11:11.50 ID:t/nkQ3ne

まあ要はcounter関数はswap関数と同じですよ。
手続き型言語ではソートや繰り返しに必須ですが、関数型言語で各種ソート作る時にswap関数は使った事がない。
木を見て森を見ずというか、counter関数を何に使うの?って話で、カウンターとしての用途なら再帰関数の引数でf (x + 1)とか渡せば良いだけですし。

loop10 n | n > 10 = return ()
loop10 n = print n "> getLine "> loop10 (n + 1)

249 デフォルトの名無しさん
2019/03/22(金) 14:35:43.76 ID:tc5CuCjg

つまりHaskell(というかElm?)で無限アラート書いとけば捕まらなかった?

250 デフォルトの名無しさん
2019/03/22(金) 15:17:19.58 ID:JJ/MZDcL

Haskellの再帰は場合によってはヒープを使うから
10^9回ぐらい閉じる奴がいたらサイバーテロとして扱われてたかもしれない

251 デフォルトの名無しさん
2019/03/22(金) 15:36:25.55 ID:t/nkQ3ne

そこは気を付けなきゃだけど(と言うか、スタックは兎も角ヒープ使うってreverseみたいにリスト溜め込むとかだけで、手続き型言語でもあり得る場面に限られそうだが)、
むしろモナドな再帰(IOはもちろん、リスト->リストな再帰も)がループになると言うのは、
手続き型言語よりも再帰でスタック使うケースが少ないと言う魅力もある。
(ここは手続き型言語が末尾再帰最適化に対応しても追いつけない所)

246 の通り、mainを再帰的に呼び出してもループになると言うのは知る限り手続き型言語では見たことない。

main変数が他の言語で言うmain関数的な動きをしているのも、圏論的には変数は引数無しの関数と見做せるから。
main変数を評価しようとすると束縛されたプログラムが動き出す。

n = 1 ― 変数であり、常に1を返す引数無しの関数

252 デフォルトの名無しさん
2019/03/22(金) 17:16:42.19 ID:JJ/MZDcL

いやGHCが与えるスタックはヒープなんだよ
Cのコールスタックみたいな固定領域じゃなくてね
それもデフォルトで最大メモリの8割というデカさだから
うっかり非末尾再帰を放っておこうものならスワップ地獄に陥る

253 デフォルトの名無しさん
2019/03/22(金) 18:49:40.42 ID:tc5CuCjg

非末尾再帰を末尾再帰に自動変換するのって技術的に不可能?
末尾再帰ってなんか無理やり感あるよね

254 デフォルトの名無しさん
2019/03/22(金) 19:00:24.32 ID:E/4CSIEY

フィボナッチを再帰で書くと定義がそのまま動く感動が味わえるのに末尾再帰に書き直すととたんに台無しになるよねw

255 デフォルトの名無しさん
2019/03/22(金) 22:26:05.94 ID:t/nkQ3ne

ヒープにあろうがスタックにあろうが末尾再帰に意識して書けばまず解決する問題だね。
ghciやrunghcみたいなスクリプト形式だと最適化(部分的な正格評価)が不十分で

sum’ n [] = n
sum’ n (x:xs) = sum’ (n + x) xs

という末尾再帰があった場合、

sum’ 0 [1,2,3]
= sum’ (0 + 1) [2,3]
= sum’ ((0 + 1)+ 2) [3]
= sum’ (((0 + 1)+ 2)+ 3) []

みたいに(遅延評価のせいで)結果を入れる変数の方でスタック消費するけども、コンパイラ(ghc)の方はこの問題は無い。

256 デフォルトの名無しさん
2019/03/22(金) 22:43:20.21 ID:t/nkQ3ne

254
別に数列(リスト)から取り出す形にすれば末尾再帰にする必要ないでしょ。

main = print $ fibs!!3 ― 0から数えて3番目
where fibs = 0:1:zipWith (+) fibs (tail fibs)

foldlの正格評価版 foldl’みたいにzipWithの正格評価版作って差し替えると高速化する。
(このネタ書いてたブログの人はzipWith’を標準で入れてて欲しいって書いてた)

zipWith’ f (x:xs) (y:ys) = seq a $ a:zipWith f xs ys
where a = f x y
zipWith’ _ _ _ = []

257 デフォルトの名無しさん
2019/03/22(金) 23:37:15.19 ID:cqN2FVLj

256
定義そのままで書きたいって話であって末尾再帰だからダメとは言ってないでござるよ

258 デフォルトの名無しさん
2019/03/23(土) 11:46:10.06 ID:CUvnstPX

「感動」はダメとは言わないが意味がわからないと言いたい

259 デフォルトの名無しさん
2019/03/23(土) 11:57:03.27 ID:XiFmcVOc

自然に書くなら数学の定義通り書くよね
でも今のコンピュータの制約上仕方なく末尾再帰にしないといけないよね
自然に書ける日は来ないのかなあってある種当たり前の感覚だと思うけど

260 デフォルトの名無しさん
2019/03/23(土) 11:59:26.53 ID:OxD1K8Qf

コンピューターの制約で変えねばならないならば定義に問題がある
定義は可能な限り一般に適用可能でなければならない
よって定義を変えればよい

261 デフォルトの名無しさん
2019/03/23(土) 12:03:29.66 ID:CUvnstPX

感情をそのまま言語化できるなら犬や猫も言葉を話せることになる
実際には感情と言語は一致しないので感情をそのまま言語化することはない

262 デフォルトの名無しさん
2019/03/23(土) 12:16:16.80 ID:XiFmcVOc

何か噛み合ってないな
自然な感覚に近い表現ができるほうが可読性高いよねくらいの話でしかないはずなのに
今何の話になってるんだ??

263 デフォルトの名無しさん
2019/03/23(土) 12:18:39.39 ID:CUvnstPX

言葉を話さない動物やAIには言語の制約がない
ゆえに動物やAIは人間を超える可能性がある
壮大な詭弁だ

264 デフォルトの名無しさん
2019/03/23(土) 12:22:19.42 ID:OxD1K8Qf

末尾再帰=ループ

分岐が発生するとこの関係が崩れる

265 デフォルトの名無しさん
2019/03/23(土) 12:26:33.46 ID:XiFmcVOc

何か変なとこに手出しちゃったみたいですね
もうやめときます
スレ汚し失礼しました

266 デフォルトの名無しさん
2019/03/23(土) 13:28:21.51 ID:CUvnstPX

可読性で思い出したが
ソースを読まなくても使ってみればわかることは読まない方がいい
読んだときの自然な感覚なんかよりも、そもそも読まないのが最も自然

267 デフォルトの名無しさん
2019/03/23(土) 16:34:59.79 ID:3o0No0Hu

可読性をあげるためだけに型に別名つけるのってどうなの

type Description = Text

みたいなやつ

268 デフォルトの名無しさん
2019/03/23(土) 17:38:52.05 ID:LmX3enfk

まあ読みやすさっていうか書きやすさだよなそれ

269 デフォルトの名無しさん
2019/03/23(土) 18:36:54.54 ID:CUvnstPX

読むコストを下げるためだけにギャンブル
○○のコストは安いというのが本当か嘘かを賭ける

賭けないのが最も安いと思わないか

270 デフォルトの名無しさん
2019/03/23(土) 19:48:40.97 ID: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))を足したものである。

271 デフォルトの名無しさん
2019/03/23(土) 23:02:28.70 ID:3o0No0Hu

269 賭けない、は具体的には何? 型シノニムを使わないということ?

272 デフォルトの名無しさん
2019/03/24(日) 00:23:58.92 ID:d5Z4QiMu

271
使うのは自由だが可読性の勉強等はしないということ

273 デフォルトの名無しさん
2019/03/24(日) 00:47:12.07 ID:xnhJaehN

272
悩んでないでスタイルを決め打ちして自分が自然だと思える書き方で行く、みたいな感じですか

274 デフォルトの名無しさん
2019/03/24(日) 09:54:41.46 ID:d5Z4QiMu

そんな言葉は使う必要がねーんだ
書き方は決まってないのにもうすでに書き終わってるからだ

275 デフォルトの名無しさん
2019/03/24(日) 11:22:25.74 ID:aOFJUm+g

やっぱりHaskellは常人向けではないんですね
Ocamlやります

276 デフォルトの名無しさん
2019/03/24(日) 12:49:13.41 ID:d5Z4QiMu

そういえば言語も決まってなかったな
常人は言語を決めないとプログラムを書けないってマジ?

277 デフォルトの名無しさん
2019/03/24(日) 15:26:29.39 ID:x/w14fyx

275
Windowsでは、昔のrubyみたいな状況なので、
それ以外のプラットフォームでやるのがいいよー

278 273
2019/03/24(日) 16:35:05.61 ID:xnhJaehN

よく判らないアドバイスだったな…
勉強・研究しないで突っ込むのはそっちの方が賭けてる感あるし、
すぐに書き終えるなら確かにそういう難しさはないが、
ソフトウェアのプロジェクトって面白いものは大抵長くなると思う。

277
Windows環境はWSLではダメなん?

279 デフォルトの名無しさん
2019/03/25(月) 18:54:20.99 ID:3963segm

261
感情表現と言うように感情はあくまでイメージ想起性のもので
文法を持ってないものだと思う。
感情をそのまま言語化なんて人間でもしてないだろ。
あくまで論理的内容の会話文章の表現に感情を想起させる表現を
選んで論理としては同じだけれど得られるイメージが異なる文を
作っているだけだと思う。
そこで文を構成するために選ぶ表現がやたら極端なときに、感情的と評されているだけで。

ていうかおじさんになったしもう無理

280 デフォルトの名無しさん
2019/03/25(月) 20:49:31.29 ID:PHYb4OS3

279
得られるイメージが変わってしまうのはコンピュータの制約のせいだよ
fibのイメージをそのまま表現できたら感動するのになあ

この状況ではコンピュータの制約は変えたいがイメージは変えたくない
「論理としては同じだけれど得られるイメージが異なる」という想定は大外れ

281 デフォルトの名無しさん
2019/03/25(月) 21:05:17.06 ID:8+7iDICf

イメージw
お前らあほだろ

282 デフォルトの名無しさん
2019/03/25(月) 21:17:58.51 ID:PHYb4OS3

コンピュータの制約が悪夢のようだから消去法でイメージ
あほなことしてるだろ
俺達なんだぜこれ

283 デフォルトの名無しさん
2019/03/25(月) 21:19:23.78 ID:3963segm

イメージないと妥当性の判断もできんぞ。
これだって
書き込み内容を読んで
内容から推測される人物像をいままでの記憶から割り出して
そういう人物に対してかつてもった心象(イメージ)を
この場合の想定(先入観)として設定して
否定的判断をするという内容を伝達しているだろ

大体こういうプロセスじゃね?

284 デフォルトの名無しさん
2019/03/25(月) 21:58:18.36 ID:25q5twYk

数学の世界で効率を全く重視してないわけじゃないからな。無限の速度のCPU上なら同じと見なせるってだけで。

末尾再帰のfibとか数学的だからアーキテクチャ関係なく元の定義より速い。
行列苦手だから書けないが、もっと速い行列バージョンも存在する。

285 デフォルトの名無しさん
2019/03/25(月) 22:00:17.95 ID:q0PAKLo0

これなんか深かった。結局愚直なコードのままで良かったみたいな
https://haskell-jp.slack.com/archives/C5666B6BB/p1551956556140300

286 デフォルトの名無しさん
2019/03/25(月) 22:05:21.04 ID:q0PAKLo0

あとこれ。今はコンパイラが賢くなったのでfoldlが遅くなくなったよって話
https://qiita.com/autotaker1984/items/09c5ceaa13e9077f5359

287 デフォルトの名無しさん
2019/03/25(月) 22:10:40.54 ID:25q5twYk

これはPrologについて書かれているが、ここで話題にしてるのはこの記事と同じ議論だろう?

宣言型プログラミングの可能性と限界
https://thinkit.co.jp/article/157/3

288 デフォルトの名無しさん
2019/03/25(月) 22:23:26.20 ID:PHYb4OS3

全く読んでないがパラダイムと論理は同じではない
パラダイムの限界と論理の限界は同じではない

289
2019/03/25(月) 22:53:06.90 ID:/j2VHiDc

284
>末尾再帰のfib
fib が末尾再帰でかけますか?

290 デフォルトの名無しさん
2019/03/25(月) 23:23:28.81 ID:25q5twYk

289

270

291 デフォルトの名無しさん
2019/03/25(月) 23:29:06.55 ID:4CvSxgZ7

sum x:xs = x + sum(xs)
は数学っぽく見えるけどアキュムレータ噛ますと途端にループに見える不思議

292 デフォルトの名無しさん
2019/03/26(火) 02:32:22.40 ID:IahGxu4l

アキュムレータは余再帰っぽく見える
数学っぽいの反対は余再帰っぽい説

293 デフォルトの名無しさん
2019/03/26(火) 19:05:26.53 ID: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)

294 デフォルトの名無しさん
2019/03/26(火) 19:25:31.93 ID:NbUyZWCM

誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 42162
https://you-can-program.hatenablog.jp

295 デフォルトの名無しさん
2019/03/31(日) 07:28:40.29 ID:S4Tb/ZFO

プログラマーのための圏論と言うPDFで公開されてるのが分かりやすい。(上・中・下の三冊)
http://bitterharvest.hatenablog.com/entry/2016/11/24/203021

296 デフォルトの名無しさん
2019/04/04(木) 13:40:08.49 ID:l5IgkZnr

自然数が射(関数)になっていると言う感覚が分かった気がする。

Haskellで書けないけど、書けるとするなら

1 = 1

1という名前の1を返す引数無しの関数。

297 デフォルトの名無しさん
2019/04/04(木) 13:43:46.44 ID:l5IgkZnr

記号的な1を1と書き、概念的な1をチャーチ数で表現するなら

1 = succ zero

298 デフォルトの名無しさん
2019/04/04(木) 21:34:52.78 ID:1azb3qjG

トートロジーではないのかね?

299 デフォルトの名無しさん
2019/04/05(金) 00:53:58.06 ID:OJKC59P7

トートロジーとかチンプンカンプンな高卒なんで。。。
補足説明や訂正があったら勉強になります( ̄^ ̄)ゞ

300 デフォルトの名無しさん
2019/04/05(金) 04:10:43.04 ID:sAmwqHSu

ラムダ的な自然数は高階関数を使うけど、圏論は冪を使わないことが多い

301 デフォルトの名無しさん
2019/04/05(金) 08:37:08.96 ID:OJKC59P7

Haskell でもsuccって関数ありましたね。。。
私が

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.73 ID:6LVMJo12

本当の所は
Int $ succ Zero
というような頭部正規形で表される関数のシンタックスシュガーだと思う

303 デフォルトの名無しさん
2019/04/05(金) 21:40:52.25 ID:o6EhB3bR

HNFは射ではない
そもそも圏論にHNFはない

304 デフォルトの名無しさん
2019/04/06(土) 02:09:18.76 ID:T7Hr9MEJ

・チャーチ数はペアノシステムの1つの実装である
・任意のペアノシステムは(適当な公理のもとで)互いに同型である
みたいな話?

305 デフォルトの名無しさん
2019/04/06(土) 03:06:25.41 ID:0mL0rlV1

303
> HNFは射ではない
> そもそも圏論にHNFはない

こういう表現は間違い
何が射かであり何が圏でないかは、どんな圏を考えているかに依存する

例えばだが、単純な型付λ計算(型の集まりが直積型の構成と関数型の構成について閉じている)に対応する圏、つまり単純な型とそれで型付けされるλ項の成す圏を考えることができる
そこでは、対象は個々の型で、射はλ項だ
そして個々のλ項は、そのλ項の中に現れる自由変数の各々の型の積対象からλ項全体への型という対象への射と考えるというものだ
この場合、λ抽象があるので冪対象が必要になり、従って、この単純な型付λ計算に対応する圏は必然的に積閉包圏というタイプの圏になる
これはいわゆる“categorical type theory”(圏論的型理論)の最も簡単な具体例だ

この圏の場合は単純な型付けに関してwell-typedなλ項は全て射として認められるのでもちろんhead normal formになっているλ項もwell-typedである限りは射だ

306 デフォルトの名無しさん
2019/04/07(日) 09:14:23.15 ID:KosuYA7L

Haskellの開発環境で、ブレークポイント張って評価中の変数の値を見る、みたいなのって出来ますかね?
Visual Studioのローカルウィンドウ的なの。
普段はSpacemacs使っててREPLで評価しては進め、評価しては進め、みたいな感じでやってます。

307 デフォルトの名無しさん
2019/04/18(木) 13:41:44.67 ID: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

308 デフォルトの名無しさん
2019/04/18(木) 23:50:53.53 ID:uUujkJat

オライリー本の要約だけ?みたいな

309 デフォルトの名無しさん
2019/04/25(木) 08:46:13.49 ID:xhj9dxYD

cabalのnew-から始まるnixスタイルコマンドが出来たからtackつかう意味あまりないですよね

310 デフォルトの名無しさん
2019/04/25(木) 09:33:12.75 ID:s2usWHpE

309
v2-build だっけ? よく知らないが stack いらなくなるやつなんだ?

311 デフォルトの名無しさん
2019/04/25(木) 23:59:42.81 ID:EXuFo8FY

stackageが変わるんですねぇ。stack2も間もなくとか。
https://www.fpcomplete.com/blog/2019/04/stackage-changes-and-stack-2

312 デフォルトの名無しさん
2019/04/29(月) 10:21:15.20 ID:La7Zhpj6

stack or cabal どっちを使えばいいんだ

313 デフォルトの名無しさん
2019/04/30(火) 07:55:22.06 ID:tedPJGU+

stack!

314 デフォルトの名無しさん
2019/04/30(火) 15:29:26.12 ID:Dc6+0j7S

312
迷う理由がわからない
現時点で好きな方を使えばいいのでは?

どっちを使っても、後で後悔することなんてないと思うが

315 デフォルトの名無しさん
2019/04/30(火) 18:00:12.30 ID:hygavAeS

314
もはや同等とみていいの?
一長一短がイマイチ見えないので比較できない。

316 デフォルトの名無しさん
2019/04/30(火) 18:03:11.15 ID:hygavAeS

入門者に紹介するときはどうすれば?

317 デフォルトの名無しさん
2019/05/01(水) 13:06:07.04 ID:ALj9hUB7

315
自分で情報を得られず、比較できなくて選べないくらいなら、
一長一短なんか考えずに、今好きな方や気になる方を使えば良いんだよ。

stackを長い間使ってきたから今後も使い続ける、でもいいし、
新しいcabalに興味が沸いたからcabal使ってみる、でもいい。

例えばパーサーライブラリ、Webライブラリ、FRPライブラリなどは色々あるけど、
いちいち「一長一短を比較した上で」選ぶ人はそんなに多くないでしょう。
みんな取りあえず何か一つ使ってみて、他に興味が湧いたら浮気してみて、
それからでしょ、比較するのは。

318 デフォルトの名無しさん
2019/05/01(水) 13:20:11.30 ID:ALj9hUB7

316
両方の一長一短をちゃんと比較して紹介するのは、
記事や本を書くプロや、意欲のある人に任せればいいと思う。

紹介のプロじゃないのなら、自分が好きな方を精一杯アピールすればいい。

それもできずに、初心者にどちらを紹介しようか悩むのなら、順番が違う。

どちらか一方でもアピールできるくらい使い込むのが何よりも先でしょ。

319 デフォルトの名無しさん
2019/05/01(水) 13:42:48.29 ID:gsz88y7w

まぁこの手の選択にある程度以上責任持って助言するのは難しいんだよな。
少なくとも両方使ってないとどっちがいいとか言えないし。
ほとんどの人が最初に使った方をそのまま使い続けるもんじゃね。
私もcabalしかつかったことないし。

320 デフォルトの名無しさん
2019/05/01(水) 14:03:02.54 ID:01/czEVZ

「みんなの見解を聞く」も自分で情報を得る過程のひとつだと思ってるんだが

記名ネットではしにくい無責任方言もここなら言えるでしょ

321 デフォルトの名無しさん
2019/05/01(水) 14:23:04.11 ID:01/czEVZ

まだキチンと検討していないが、自作したツールをbrewとかで公開するとき、ビルドツールを依存に含める必要が出てくると思う。予めどっちかを使うかは決めておきたい。
バージョンを重ねるなかでフラフラ変えるのは避けたい。

あとcabalだとコンパイラを替えるときはghcupなる別ツールを使うの? これだとクロスコンパイラはどうなる。
複数のアーキテクチャのための成果物をビルドするとき、ghcup set ... &amp;&amp; cabal build &amp;&amp; ghcup set ... &amp;&amp; cabal build ... みたいにいちいち指定しないといけないのかしら。
コレを解決するにはghcupにパッチを当てるかcabalを改造するか、スクリプトを書くかするわけだ。その点 stack build はコマンド一発なのに。

俺は年間50時間くらいstackのパッチや関連ツールを書いてきた。このままで行けるならいいが、stack がいずれオワコンになるなら早めに見切りつけて時間節約したい。
新元号が30年続くなら令和中に1500時間も浪費することになるんだぜ。

322 デフォルトの名無しさん
2019/05/01(水) 14:53:10.97 ID:ALj9hUB7

320
> 記名ネットではしにくい無責任方言もここなら言えるでしょ

そんなレスは情報ではないのでは?
ただのノイズでしょ(ノイズの全てがゴミとは言わないが)。
本当に情報を得たいのなら、時間の無駄だよ。

もし、そんなのを参考にどっちか決められるのなら、
初めからルーレットで決めるのと大して変わらないのでは?

「自分で情報を得る」の第一歩は、ビルドツールで一番何がしたいかを決めて、
それが出来るか、やりやすいかを「公式ドキュメント」を見て調べる事だよ。

stackとcabalの公式ドキュメントを見て比較して、
それでも分からない部分をピンポイントでSNSや掲示板などで質問する、
それが二歩目だと思う。

323 デフォルトの名無しさん
2019/05/01(水) 16:46:41.64 ID:fQT4rWd7

伸びてると思ったら。。。
今の所stackかな。
cabalは依存関係で過去に評判悪かったから、新しいのの評判が固まったらかな。

324 デフォルトの名無しさん
2019/05/02(木) 10:15:34.23 ID:PPz8MGJz

322
調査を並行してやっちゃいけない理由はないでしょ。聞くだけならタダやし。
スレ民の意見をノイズだなんて思ったことないよ。自分にない視点や個人的使用感、気づきにくい落とし穴を教えてもらえるかも。

俺の雑感はstackは不備だけでなくバグも多かった気がする。.stack-workを消したらビルドが直ったみたいなことが何回かあったと思う。

stackのメリットは、
(ghcupの方針が変わらないなら)コンパイラの導入まで自動でやってくれるので、例えばHaskellスクリプトを書いてシェバンにstack、
以降に依存ライブラリを書いておけばいつでもどこでも動く(HackageとStackageが活きてるかぎり)、必要なものを都度自動で用意してくれる。

stackのデメリットは、
設定ファイルが多すぎる。プロジェクトレベルでは stack.yaml, package.yaml, Hoobar.cabal
と、どれに何を書くかが判りづらい、いちいち引っかかる。

325 デフォルトの名無しさん
2019/05/02(木) 12:34:35.03 ID:WAiWu/DB

324
無責任放言がノイズなんだよ。

で、その全てがゴミとは言わないとも言ってる。

326 デフォルトの名無しさん
2019/05/02(木) 13:13:18.93 ID:PPz8MGJz

325 前半は反論したし、後半は批判してないですよ。

327 デフォルトの名無しさん
2019/05/03(金) 01:40:50.69 ID:nJ30PKpf

凄いH本の中国語版見る機会があって、
漢字の用法がカタカナ語より
しっくりすると思ったんですけどどうでしょうか。

模式:  パターン
門衛:  ガード
類型類: 型クラス

さすがにモナドは漢字翻訳難しいみたいですが。

328 デフォルトの名無しさん
2019/05/03(金) 06:21:38.43 ID:hYhvNKlL

その程度のカタカナがしっくり来なかった人生を反省するんだ

329 デフォルトの名無しさん
2019/05/03(金) 09:01:46.98 ID:gvxbExu1

慣れとしっくりくるのは別物だけどな
無意味刺激と有意味刺激、表音文字と表意文字に対する認知は先天性の個人差があるんだからあまり他人の人生なんて分かりもしないものに言及するべきではない

どちらにせよ今の中国は学術用語を積極的に訳する文化ではあるよね
Haskellに限らずclassや他の用語もそれに類した漢字が用いられてそう
ただこれも漢字の意味が時代によって変化してくると正しい用語認識を阻害しうるのは現代日本でいくらか見られているし、一長一短と個人差だね

330 デフォルトの名無しさん
2019/05/03(金) 10:47:01.08 ID:4xTnxfhe

かつてアルゴリズムを算法とかコンパイルを翻訳とか
一部で言っていましたね。

モナドアクションを算法と訳すならモナドは法かぁ
などと連想してみました。

331 デフォルトの名無しさん
2019/05/03(金) 11:01:45.26 ID:aPBgVjEU

漢字に訳する場合どっか権威のあるところが決める必要があるよね
そういうところがめんどくさい

332 デフォルトの名無しさん
2019/05/03(金) 12:09:36.96 ID:4xTnxfhe

大陸だと結構あちこちで勝手に翻訳されたり
輸入されていずれ収斂されていくっていう
感じだった。

日本でも官公庁の訳語が定着しないことも
多いよね。

333 デフォルトの名無しさん
2019/05/03(金) 12:40:40.57 ID: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個入ったリストが手に入る。

334 デフォルトの名無しさん
2019/05/03(金) 12:41:50.16 ID: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個入ったリストが手に入る。

335 デフォルトの名無しさん
2019/05/03(金) 14:37:49.43 ID: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

336 デフォルトの名無しさん
2019/05/03(金) 14:52:14.89 ID:af96C5Xg

335
いいのでは、と言うのは失礼な言い方だった。

こういう方法もあるよ、と言うことで。

337 デフォルトの名無しさん
2019/05/04(土) 06:36:55.99 ID:S+NYX3By

335
そう言うのがあったのね。。。
thanks.

338 デフォルトの名無しさん
2019/05/04(土) 09:34:13.31 ID:6lRHaHYp

Arrowised FRP を 矢矧のFRP とかいうのは好き

339 デフォルトの名無しさん
2019/05/04(土) 09:36:30.32 ID:6lRHaHYp

型クラスの訳語 類型類 は、kindの 類 とごっちゃになるな、と思ったけど、
kindは 種 が主流なのか

340 デフォルトの名無しさん
2019/05/04(土) 17:11:10.97 ID:MNo33vgu

339
主流というか、それ以外に聞いたことがない

341 デフォルトの名無しさん
2019/05/04(土) 18:12:27.03 ID:6lRHaHYp

340
初期の訳語では類だったかも?
https://www.sampou.org/haskell/tutorial-j/classes.html

342 デフォルトの名無しさん
2019/05/06(月) 16:30:54.25 ID:gerN8CWz

すみませんHaskellでアート芸術方面のプログラミングをしたい場合
既存の表示用ライブラリは導入からして難しそうな印象があるので
表示はProcessingに任せるという方法を考えていますが、

http://hackage.haskell.org/package/processing-for-haskell

もしそういう方面に詳しい人がいましたら
それについての助言を頂きたいです。

343 デフォルトの名無しさん
2019/05/06(月) 16:46:03.96 ID:jvaKyQ4h

342
なにを助言してほしいのか具体的に明確に言ってくれ。

344 デフォルトの名無しさん
2019/05/06(月) 21:07:46.31 ID:gerN8CWz

343
説明が不十分ですみません。
アート芸術のプログラミングを行う場合
表示は既存ライブラリは使わずに

Haskell-Processing連携ライブラリを使って
データ処理と表示を切り分けた方が
簡単なのではないだろうかという質問でした。

https://github.com/anton-k/processing-for-haskell/blob/master/tutorial/QuickStartForProcessingers.md

表示はProcessingで行います。

345 デフォルトの名無しさん
2019/05/06(月) 23:14:35.12 ID:jvaKyQ4h

344
データ処理と表示処理を切り分けた方が開発が楽になるのはその通り。

でも、グラフィックス ライブラリに何を使うかと、
楽に切り分けできるかどうかは、一般には関係ない。
特に haskell のグラフィックス ライブラリはたいてい EDSL 形式になっているから、
どれを使おうが、切り分けの楽さは大して変わらない。

後はもうライブラリの表現力が求めるレベルにあるかどうかと、
個人の経験や慣れ、趣味の問題だ。
Processing に慣れているなら processing-for-haskell でいいだろう。
個人的には gross が好き。


ところで、既存のライブラリって何だ?
processing-for-haskell は 2016 年でアップデートが止まってるが、
これは既存ではないの?

346 s2019/05/06(月) 23:44:49.55 ID:gerN8CWz

345
ありがとうございます。理解しました。

参考にしたのが School of Expression だったので
情報が古くprocessing-for-haskellが
最新の物と思えて勘違いしてました。

347 デフォルトの名無しさん
2019/05/07(火) 14:46:19.40 ID:A4BDuZrS

diagrams を使ってた。

348 デフォルトの名無しさん
2019/05/08(水) 18:25:39.72 ID:Sfv9Blmq

344
そういうことをしたいならProcessingだけでやった方が手間かからない
Haskellで書けば楽になるとかそんなことは一切ないので

349 デフォルトの名無しさん
2019/05/08(水) 22:03:23.22 ID:Et3ZqY/0

348
「haskellで」アート芸術方面のプログラミングをするには、という質問だと思う。

ジェネラティブアートなんか haskell にもってこいじゃないかな。
もちろん、Processing の得意分野でもあるんだが、
宣言的に書ける haskell もけっこうマッチするのでは?
全て型プログラミングで生成とかもできそう。

350 デフォルトの名無しさん
2019/05/12(日) 15:06:12.68 ID:11og9P/f

f xs = let g = \x -> 2 * x in map g xs

この場合、ラムダは最初に一回メモリにアロケートされて g に束縛されるよね。

でも、もしかして、

f xs = map (\x -> 2 * x) xs

これって、f が呼ばれる度に map の第一引数のコード(ラムダ)がメモリにアロケートされるの?

351 デフォルトの名無しさん
2019/05/12(日) 21:06:22.80 ID:yBh745ei

クロージャにしなくてもいいラムダはただの関数として扱われるんじゃない?
というか上のコードならセーフっていうのはgを使いまわしてくれるから?
そんな気の利いた処理系なら下のラムダも使いまわしてくれそうだけど

352 デフォルトの名無しさん
2019/05/12(日) 21:12:09.17 ID:x0KgamNa

その辺り、実際にどんな実行コードが生成されるかに関しては、
コンパイラ(GHC)に聞いてくれ、としか言いようがない
インライン展開とかクロージャ変換といったコンパイラ技法を学ぶことを勧める
関数型言語だからTiger本とか

353 デフォルトの名無しさん
2019/05/13(月) 01:00:48.68 ID:Jw01/DTu

ラムダは何も簡約しなくても最初からWHNFじゃないのか
最初からWHNFならサンクとか不要だから普通の言語と同じでいい

354 デフォルトの名無しさん
2019/05/13(月) 23:41:36.79 ID:kVO0yWqO

350
ラムダ式が動的に生成されるものと思っているのなら間違い
この場合は単なる関数として展開されている

355 デフォルトの名無しさん
2019/05/14(火) 19:41:06.85 ID:B2OD/x5C

なるほど、納得できた。
これからは安心して引数にラムダを直接書ける。
ありがとう。

356 デフォルトの名無しさん
2019/05/23(木) 06:24:49.40 ID:Jx74KNT2

mtl によるモナド合成はモナド則を保存しない

マジかよ失望しました。mtl は窓から投げ捨てます

357 デフォルトの名無しさん
2019/05/23(木) 17:37:28.82 ID:4B/apNfB

動的型付けに比べて静的型付けの方が優れている、は常に真?

実はHaskellで動的プログラミングをやる話を読んで、
あれっコレ意外といいじゃんと思ってしまったんだ。

358 デフォルトの名無しさん
2019/05/23(木) 18:42:06.90 ID:ATxGBnNk

次にお前らは『優れているを定義してくれ』と言うッ!

359 デフォルトの名無しさん
2019/05/24(金) 01:05:05.82 ID:jCONIFNW

任意の言語に丸投げするシェルスクリプトはズル
文字列をevalするやつもズル
ズルをする必要がない言語は優れている
どうせこんな感じだろうと思ってる

360 デフォルトの名無しさん
2019/05/24(金) 04:51:31.33 ID:3xUJmLCM

いくつかの基準が思いつく。
速い・短い・アシストが手厚い・理解しやすい・バグが混入しにくい…

359
「ズル」には悪い、の意味が予め含まれていると思うので納得できない。
evalを用いた場合に比べて静的型の解決の方が優れているのを示す必要があるでしょう。

361 デフォルトの名無しさん
2019/05/24(金) 08:28:17.80 ID:jCONIFNW

格闘技ですら、反則には反則負けという意味が含まれている

362 デフォルトの名無しさん
2019/05/24(金) 09:32:47.08 ID:3xUJmLCM

含まれてないと思うし、Haskellに関係ない。

363 デフォルトの名無しさん
2019/05/24(金) 11:18:44.54 ID: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"

364 デフォルトの名無しさん
2019/05/24(金) 11:19:15.22 ID:YDCPM0sO

hellos = (cycle.tails) "Hello World!!"

marks = cycle ["/","|","\\","--"]

put (x,y) = do putStrLn (x ++ "\n" ++ y)
mapM_ (\_ -> putStr "") [1..50000]
system "clear"

365 デフォルトの名無しさん
2019/05/24(金) 14:25:55.92 ID:3xUJmLCM

363
モナディックアクションを構造に入れて使うとき重宝するよ。
main = sequence_ . (map (putStr "log:" ">)) $ [print "hoo",putStr "bar"]
個々のアクションを好きに調整できる(例ではそれぞれに前処理を足した)。

366 デフォルトの名無しさん
2019/05/24(金) 18:49:41.11 ID:aewo4dFz

365
ありがとう。
いつか役立てたいものです。

367 デフォルトの名無しさん
2019/05/24(金) 18:55:43.73 ID: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だと全ての型をインスタンスにしろ的なエラーメッセージが出ます。。。
スマートな方法があれば。。。

368 デフォルトの名無しさん
2019/05/24(金) 20:57:13.04 ID:SgRJwbG9

363
mapじゃなくunfoldrで[IO a]を作ってもいい

367
エラーは「インスタンスにする型はこれこれこういう形にしろ」って意味
instance (Num a) => MyEq a みたいな形を許すと
instance (MyEq a) => Num a とかもできて意味わからなくなるから
{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
というおまじないを使って制約を取っ払う

369 デフォルトの名無しさん
2019/05/25(土) 02:52:58.92 ID:qv11a0DJ

357
オブジェクトファースト動的解決脳だとHaskellはただめんどくさいだけの言語にしか見えない
利点とされていることが欠点にしか見えないもある

370 デフォルトの名無しさん
2019/05/25(土) 04:10:17.12 ID:/RQqfD4m

369 具体的にはどのあたりが?

371 デフォルトの名無しさん
2019/05/25(土) 06:07:15.41 ID:/RQqfD4m

"--port=" <> ( 8000 <> 80 )
これが "--port=8080" になって欲しい、みたいな?

372 デフォルトの名無しさん
2019/05/25(土) 12:55:48.15 ID:1pSM7n1N

371
それは暗黙の型キャストとかの話な気もするが
String と Num a との積を勝手に解決するなよって思う

373 デフォルトの名無しさん
2019/05/25(土) 14:00:56.82 ID:/RQqfD4m

372
https://github.com/chrisdone/dynamic
ではどちらのリテラルも直ちにDynamic型に落ちます。

374 デフォルトの名無しさん
2019/05/25(土) 14:25:22.48 ID:/RQqfD4m

...でも演算子を上述のように定義すると半群の結合則を満たさない。
dynamicパッケージでもそうされてなくて、結果は"--port=800080"になります。

動的プログラミングを求める人は柔軟に使える演算が欲しくて、
Haskellのデフォルトの定義は型変換がただ面倒くさい。
369が言いたかったのは例えばそういう事かなと解釈しました。

375 デフォルトの名無しさん
2019/05/25(土) 17:32:54.76 ID:nXhWU27U

368
おまじない!!
ありがとうございます。
これで行けそうですm(_ _)m

376 デフォルトの名無しさん
2019/05/25(土) 20:46:23.64 ID:orcduCKk

何やってるのかよく分からんけど、おまじないで解決

haskellの初心者時代って、こういうの他言語に比べて多いよね
どうにか分かりやすく説明できないものか、いつも悩む

377 デフォルトの名無しさん
2019/05/25(土) 21:58:16.52 ID:1pSM7n1N

374
まあ確かに数値計算するときにfromIntegralだのrealToFracだのをゴテゴテ書くのは
(それを要求される理屈はわかっていても)面倒くさい
そこを「柔軟」にしていくと人が書き間違えたときに教えてくれなくなるから
結局は書きやすさと安全性とのトレードオフだよなあ

378 デフォルトの名無しさん
2019/05/31(金) 20:49:17.15 ID:SYuh0ZxQ

結局、マクロ、関数、型チェック以外にプログラムにできることなんてない。
バカがバカな夢を見る。

379 デフォルトの名無しさん
2019/05/31(金) 20:53:47.48 ID:4BnNLuhc

それを証明してから言えよバカ

380 デフォルトの名無しさん
2019/06/02(日) 11:37:55.39 ID:mVf2k3qD

Cは関数の定義はゴテゴテ書くが演算子の定義は何も書かなかった
C++が演算子を定義するようになったからHaskellも影響を受けたんじゃないか
数学的証明だけでなく、歴史を巻き添えにして議論しないと現実は見えない

381 デフォルトの名無しさん
2019/06/07(金) 00:15:16.82 ID:pdU7zkZH

すみません、
凄いH書籍で学習していて疑問に思ったのですが
型クラス中級で、真理値の様な物を持ちうる型、
JavaScriptのfalsyな値を持つ型を作る実習で
Intや[ ]を独自のYesNo型のインスタンスにする
例があったのですが
標準で存在する型に後から
独自の型のインスタンスにする事に違和感を感じ
バグの温床になるのではという懸念の印象がありました。


オブジェクト嗜好のサブクラスみたいに
「Int」型から「IntYesNo」型を
生成できるのなら違和感ないのですが。

これについての合理性と安全性を明示している
書籍やサイトを知っていたら教えて下さい。

382 デフォルトの名無しさん
2019/06/07(金) 00:45:34.97 ID:UZbkEtL+

381
温床とまで言うか・・・

そのせいで例えばどんなバグがありそうか、
ひとつでも例を示すことはできる?
ごく簡単な例でいいんだが。

383 デフォルトの名無しさん
2019/06/07(金) 01:35:51.00 ID:UZbkEtL+

381
あと、なんど読み返してもタイポっぽく見えないんでツッコミ入れる。
「AをBのインスタンスにする」と言うとき、
Aは型、Bは『型クラス』だからな。

失礼なことを言うが、もしかして違和感の根源は、
型と型クラスがそれぞれ何なのか理解できていないところにあるのでは?

384 デフォルトの名無しさん
2019/06/07(金) 06:58:43.76 ID:m7qCH6wP

    『凄いH書籍』

(;・`д・&#769;)...ゴクリ...(`・д&#769;・;)

385 デフォルトの名無しさん
2019/06/07(金) 19:56:02.21 ID:SUVJWRIg

同モジュール(Haskellでいう)内なら拡張に対しては責任を持つべきなので
拡張がモジュールをまたがないなら大した問題はない
他の言語でもモジュール内操作に対してはあんまりフールプルーフじゃないしね

がHaskellの場合は拡張が子モジュールに伝播してしまう

386 デフォルトの名無しさん
2019/06/07(金) 22:06:13.49 ID:wtNNzOUb

Ruby の偽は、false, nil の2つだけ!

JavaScript, Python, PHP などは、偽が10個ぐらいある!

空文字列・空配列・空辞書とか、0, 0.0 とか、
これらの言語は、しょーもないバグが多い!

だから、Rubyよりも生産性が低い!

387 デフォルトの名無しさん
2019/06/07(金) 23:58:36.77 ID:KFSm+TLI

『入門HASKELLプログラミング』2019年07月31日発売予定
https://www.shoeisha.co.jp/book/detail/9784798158662

「コンピュータのプログラミング」から脱却し、“学術”ではない、実用度重視のHaskell
入門書

Haskellは、関数型プログラミングを研究する対象としての側面が強すぎ、一般的なアプリ
ケーション構築を目的とした開発言語の側面が、ともすればおざなりになりがちでした。
そのため、他の言語(JavaとかC/C++とかC#など)がこなす、ありふれたアプリケーション
をHaskellで構築しようとすると、キーボードを叩く指が止まってしまうことがありました。
本書は関数型プログラミングの基本を押さえつつ、いわゆる「開発言語」として実用的な
プログラムを書けるようなレベルに誘う一冊です。(後略)

388 デフォルトの名無しさん
2019/06/08(土) 01:49:15.40 ID:WG0iLGtf

386
rupy死んだのになんで生きてるの?ww
とっとと後を追いなよwwww

389 デフォルトの名無しさん
2019/06/08(土) 03:07:04.34 ID:PPvh7BCd

Pythonのfalsyな値には、そんなに違和感はないけどなぁ……。

390 デフォルトの名無しさん
2019/06/08(土) 03:44:53.76 ID:epil0e3i



391 デフォルトの名無しさん
2019/06/08(土) 03:45:50.56 ID:C8CdREmC

【実体験】ブログを1,000記事ほど書いたら、月300万くらい稼げた話
https://www.youtube.com/watch?v=GmVulh282ps&amp;t=604s
【報告】ブログで「月収1,000万」を達成できました【方法を解説する】
https://www.youtube.com/watch?v=pgjcuLp8wt0
年間ほど努力したら「年収3,000万」になったので、経験談を語る
https://www.youtube.com/watch?v=oV_SY-a1lMs
期間工ブログの収入は1500万円でした。【フリーランスの現実&amp;底辺からの復活編】
https://www.youtube.com/watch?v=aijLjFLOuC4
年商1300万のプロブロガーの初心者時代から今までの軌跡
https://www.youtube.com/watch?v=UMiF4T2EO9o
【収益報告】実働月10hでも大金稼ぐ方法を解説【年収6,000万】
https://www.youtube.com/watch?v=o2ISWP-VZsw&amp;t=288s
無料ブログは稼げない。稼ぐならオススメはWordPress一択の理由
https://www.youtube.com/watch?v=o8oUe3JS-lg

392 デフォルトの名無しさん
2019/06/08(土) 06:33:44.76 ID:YhBKasle

get programming with haskellは、stackがでてくるの終盤だったり、
あまり実用度重視じゃないんだけどなー

393 デフォルトの名無しさん
2019/06/08(土) 10:04:10.25 ID:ryWt2Gls

389
Ture + True
みたいなのはエラーにしてくれたら良いのにとは思う

394 デフォルトの名無しさん
2019/06/08(土) 13:03:38.36 ID:JxaHk6L1

そんなコードが生じるシチュエーションがわからん。

395 381
2019/06/08(土) 17:21:52.39 ID:mlZK/xCe

ありがとうございます。
既存の型を独自の型クラスの
インスタンスにする事は
同モジュール内の拡張として
プログラムする人が責任を持つべきなので
問題はないとの事で了解しました。

急いで質問を書いたので
型クラスを型と間違って書いてしまいすみませんでした。

396 デフォルトの名無しさん
2019/06/18(火) 06:17:55.21 ID:3nOE2mBA

プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/

142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。

397 デフォルトの名無しさん
2019/06/20(木) 01:44:21.27 ID:R55GIdRS

functoriality とはどのような性質のことでしょうか?

398 デフォルトの名無しさん
2019/06/20(木) 04:43:35.94 ID:R55GIdRS

397
補足しますと、functorial は分かります。
ですが、functoriality がいったい何に対してどのような意味で使う言葉なのか分かりません。

Hask圏を例にしてくれると助かります。

399 デフォルトの名無しさん
2019/06/27(木) 19:51:11.76 ID:xcUkqEUS

398
Functorであること
Haskellで言えば、Type -> Type なカインドを持つ型コンストラクタがFunctorのインスタンスであって、Functor則を満たすこと

400 デフォルトの名無しさん
2019/07/01(月) 09:45:16.04 ID:PP1UmLnE

ラズパイでStackの環境構築をしていざコンパイルをしてみたら

・llvmは6.0のみサポートだよ
・一応コンパイルしてみるよ

というメッセージが出た後,

・サポートされていない機械語を使ってるよ

ということでコンパイルが通らなかった。

llvmを6.0のソースからmakeすればいいのかな?

Stackやllvmはすべてapt-getで最新版にしてあります。

401 デフォルトの名無しさん
2019/07/01(月) 21:38:59.85 ID:/x+NnqQg

officialのrepositoryと最新版(binary)は違うよ

402 デフォルトの名無しさん
2019/07/02(火) 12:46:31.20 ID:+JGifkmy

hackageのcabal-installのbootstrap.shをクリックしても
Page not found: Sorry, it's just not here.
とでてダウンロードできないのだが?

403 デフォルトの名無しさん
2019/07/02(火) 16:08:25.14 ID:+JGifkmy

まあいいやtar.gzに入ってるからな

404 デフォルトの名無しさん
2019/07/02(火) 20:25:51.99 ID:2+AqqNZH

401
レスありがとうございます。
公式の最新版とaptリポジトリでの最新版は違うということは認識してます。

やっぱり llvm 6 のソースを公式サイトからおとして make install ですかね?

405 デフォルトの名無しさん
2019/07/11(木) 15:19:40.91 ID:EO8VLz8P

hackageのホームページのダウンロード数が出るところにはcabalとかからダウンロードしたものは
数にふくまれてる?

406 400,402
2019/07/20(土) 23:02:04.74 ID:flSCEm3M

一応ラズパイ上(raspberian 9.4) でもコンパイルできました。
ただしstack を使わずghcで直接コンパイルですが。

&#160;オプションが渡されていないバグがあったような情報を
見かけましたがこのあたりが原因?
https://gitlab.haskell.org/ghc/ghc/issues/11058

407 デフォルトの名無しさん
2019/07/24(水) 23:54:43.53 ID:/HKiGEdd

3件もこのスレで本の省略系がアレでワロタ
協調させて省略するとこうなる
凄いH楽しく学ぼう

408 デフォルトの名無しさん
2019/08/11(日) 16:09:11.67 ID:L0OuEHk+

λの数だけ強くなれるよ~&#9835;

409 デフォルトの名無しさん
2019/08/12(月) 07:07:43.10 ID:8tVc9hN7

最近発売された書籍はどうでしたか

410 デフォルトの名無しさん
2019/08/12(月) 18:35:53.32 ID:EuURpOPT

はい

411 デフォルトの名無しさん
2019/08/14(水) 23:43:24.45 ID:ITFywCVm

この??の部分てどう書いたらいいですか?

f :: a -> IO (Maybe b)
g :: b -> IO (Maybe c)

h :: a -> IO (Maybe c)
h x = do
(y :: Maybe b) <- f a
(z :: Maybe c) <- ??
return z

412 デフォルトの名無しさん
2019/08/15(木) 00:56:45.05 ID:2FISIxPr

もっといいやり方ありそうですが、自己解決しました。
IO (Maybe)から、いったん MaybeT IO に迂回してからMaybe(Maybe c)を潰すんですね、、

import Control.Monad.Trans.Maybe

f :: a -> IO (Maybe b)
f = undefined
g :: b -> IO (Maybe c)
g = undefined

h :: a -> IO (Maybe c)
h x = do
y <- runMaybeT $ (MaybeT $ f x) ">= (\x -> MaybeT $ g x)
let
contractMaybe :: Maybe (Maybe a) -> Maybe a
contractMaybe aa = case aa of
Just (Just x) -> Just x
_ -> Nothing
return $ contractMaybe y

413 デフォルトの名無しさん
2019/08/15(木) 02:33:07.91 ID:9FXQJNeU

Maybeを潰すのは型的に合っていないと思う

data A
data B
data C
f :: A -> IO (Maybe B)
f = undefined
g :: B -> IO (Maybe C)
g = undefined

h :: A -> IO (Maybe C)
h x = runMaybeT $ MaybeT (f x) ">= (\y -> MaybeT (g y))

h' :: A -> IO (Maybe C)
h' = runMaybeT . (MaybeT . f >=> MaybeT . g)

414 デフォルトの名無しさん
2019/08/15(木) 09:54:21.85 ID:2FISIxPr

413
ありがとうございます。

data宣言してるA B Cだと確かに型チェック通らないですね。
他にもa b cを具体的にStringにしたらダメでした。
a b cバージョンだと通ってるんですが、何か違いがあるのでしょうか?

また、実際とりかかっていたのは、
fが下のwebViewGetDomDocumentで、
gが下のgetBodyでした。
こちらもMaybeつぶしで型チェックは通っています(挙動はまだ確認していませんが)。

webViewGetDomDocument :: WebView -> IO (Maybe Document)

getBody
:: (DocumentClass self, Control.Monad.IO.Class.MonadIO m) =>
self -> m (Maybe Graphics.UI.Gtk.WebKit.Types.HTMLElement)

415 デフォルトの名無しさん
2019/08/15(木) 17:40:56.74 ID:3wJ+zeP0

h x = do {
y <- f x;
z <- case y of { Nothing -> return Nothing; Just y' -> g y' };
return z
}

なにがMaybe潰しだ
ただの分岐にデザインパターンみたいな名前つけやがって

416 デフォルトの名無しさん
2019/08/16(金) 13:02:37.84 ID:wUgksw8i

わざわざzを経由する必要ある?

417 デフォルトの名無しさん
2019/08/16(金) 18:54:52.75 ID:pXb2X6++

モナド則その2
m ">= return = m
を満たさない半モナド?を想定してる可能性

418 デフォルトの名無しさん
2019/08/17(土) 01:26:41.61 ID:ES53moma

圏論の知識って役に立つの?

419
2019/08/17(土) 01:42:35.34 ID:ToRIVhzM

私は逆をお聞きしたいです
haskell の知識って圏論を理解する助けになりますか?

420 デフォルトの名無しさん
2019/08/17(土) 03:49:03.33 ID:CK+x7f61

全くならないよ

421 デフォルトの名無しさん
2019/08/17(土) 10:59:33.48 ID:2mj8+539

Haskellと圏論を比較することでHaskellの過激な部分が見える
型を省略する
タプルでできることをカリー化でやる
「任意のfに対しgが存在する」ですむことを高階関数でやる

422 デフォルトの名無しさん
2019/08/17(土) 18:25:28.56 ID:ljAxaRgk

簡単なことを難しく書くのがHaskell

423 デフォルトの名無しさん
2019/08/17(土) 18:36:58.79 ID:He41kTu9



424 デフォルトの名無しさん
2019/08/18(日) 03:03:18.77 ID:AO5DQImr

タグつき共用体は簡単だ
C言語にもあった共用体をやめてコールバック地獄になったのはHaskellのせいではない

425 デフォルトの名無しさん
2019/08/18(日) 20:44:58.36 ID:zn243Obk

別スレでこんなの見つけた。
https://insights.dice.com/2019/07/29/5-programming-languages-probably-doomed/
人気なさすぎという事なのかな?
Haskell好きなんだけどなぁ。

426 デフォルトの名無しさん
2019/08/18(日) 21:34:03.15 ID:Ne5INCCb

開発関係者の間で口コミが増えないから使われていないんじゃないか
消えるかもってことらしいがそもそも学術研究目的だからそれでも
構わないってことじゃないかと思うが…

427 デフォルトの名無しさん
2019/08/18(日) 22:46:17.93 ID:PVG4KZY2

何があれば Haskell に人気が出るだろうか

428 デフォルトの名無しさん
2019/08/18(日) 23:04:15.06 ID:Onid3Fuw

C にせまる速度がでたら?

429 デフォルトの名無しさん
2019/08/18(日) 23:54:21.76 ID:gc7JPYBd

キラーアプリ(フレームワーク的な)でしょ
pandocでは不足

430 デフォルトの名無しさん
2019/08/19(月) 03:52:58.25 ID:zjob4//4

Pandoc 初版2006年8月10日 現在スター数 16,396
shellcheck 初版2013年7月24日 現在スター数 16,023
こういう感じのがもっとほしい

431 デフォルトの名無しさん
2019/08/19(月) 07:23:04.62 ID:2IiE7zyK

そもそも数学の人気のなさをキラーアプリ説で説明できない
宗教では惑星の動きを説明できないみたいに

432 デフォルトの名無しさん
2019/08/19(月) 07:34:27.76 ID:WV8MsfnG

オライリーの本にはパーサーは最強と書いてあるが何に使う?
まだパーサー必要じゃないので恩恵味わっていない

433 デフォルトの名無しさん
2019/08/19(月) 07:41:22.99 ID:TcQTkvSK

pandocに...

434 デフォルトの名無しさん
2019/08/19(月) 11:51:15.13 ID:XOuYcf/m

パーサはオンラインサービスのやりとりの解析に便利そう。
あるいは溜め込んだビッグデータの解析前処理とか。

435 デフォルトの名無しさん
2019/08/19(月) 15:54:57.04 ID:Kn9dUhI/

427
束縛という考えをやめたら人気は確実に出るかと
あれのせいで使いにくいわけだし

436 デフォルトの名無しさん
2019/08/19(月) 16:56:00.26 ID:zjob4//4

設定言語の Dhall にもパーサの強さが効いてきてるだろうね。Slackあたりで新しいキラーアプリみたいに言われていたやつ。
ただの設定より強いけどフルセットのプログラミング言語ほどでないために無限ループなどを作れず安全で便利らしい。
現在スター数二千弱

437 デフォルトの名無しさん
2019/08/19(月) 17:27:44.29 ID:2IiE7zyK

束縛あり
(m ">= \ x -> return x) = m

束縛なし
(">= return) = id

438 デフォルトの名無しさん
2019/08/21(水) 02:19:03.88 ID:DF21aIsc

関数抽象とかλ抽象とか内容にたいして意味がない説明が長々と続いてると思ったら
単なる無名関数のことだった
最初からそう書けばいいのにわざと理解が遠くなる書き方するのは何だろうね

439 デフォルトの名無しさん
2019/08/21(水) 03:03:56.38 ID:zk1xpAiv

438
それはラムダ抽象などに興味がある読者を対象にしているからかもしれない。

単に説明が下手なだけかもしれないが。

ちなみに私は前者に当たるので、そういう単語が出てくるとワクワクし、理解がはかどる。

440 デフォルトの名無しさん
2019/08/21(水) 08:26:50.91 ID:vWB9dk8w

438
循環論法避けるため
数学だからね

441 デフォルトの名無しさん
2019/08/21(水) 08:59:06.15 ID:MCeqK6x4

会話成り立ってるのか?

442 デフォルトの名無しさん
2019/08/21(水) 09:50:43.38 ID:NrNhEvfu

具体例を書けないやつは説明が下手なだけだし
具体例が長々と書かれていたら読み飛ばすようなやつは誤読するだけ

少なくとも動的スコープと静的スコープを間違えた例を書くべきだ
これに関しては数学よりも歴史が役に立つ

443 デフォルトの名無しさん
2019/08/21(水) 14:58:21.32 ID:ur92HW83

今日の流行りはこれ
https://withnews.jp/article/f0190820002qq000000000000000W00o10101qq000019512A

444 デフォルトの名無しさん
2019/08/21(水) 20:13:20.77 ID:a8Z/37wn

442
> 具体例を書けないやつは説明が下手なだけだし

具体例を書けない人間は説明下手以前にそもそも十分に正しく理解していないからこそ具体例を書けないんだよ
中途半端な理解しかしていない人間が上手に説明できるはずがないだろうが

> 具体例が長々と書かれていたら読み飛ばすようなやつは誤読するだけ

具体例として長々としか書けないのも困り者だけれどね
説明する側が本当に良く理解できているならば、よほど高度にテクニカルで微妙な概念や定義でない限り
具体例としては簡潔で短い例や反例を挙げられるはずだ

> 少なくとも動的スコープと静的スコープを間違えた例を書くべきだ
> これに関しては数学よりも歴史が役に立つ

Lispの歴史が正にそれを物語っている
当時MITのAI Lab.のJohn McCarthyらによってLispがλ計算に基づいて初めて産み出された時、λ計算の変数のスコープを間違って
(というよりはLispが実装された1960年代前半のコンピュータのメモリ量と処理能力の極めて厳しい制限から)
動的スコープを採用して久しくその間違いを改めなかったのから、Guy Steele, Jr.らによるScheme言語の提案と同処理系の開発および
Lisp諸方言の統一化としてCommon Lispの言語仕様を策定する際に、変数のスコープとしてはSchemeの静的スコープを標準として採用することで
漸くLispプログラミング界で動的スコープでなく静的スコープが当たり前になったという歴史がね

ついでに言っておくと、かつてのLisp界隈での混乱として、言語仕様上の問題としての動的スコープ-vs-静的スコープの問題と
類似の(だが異なる)問題であるshallow_binding-vs-deep_bindingの問題(こちらは言語仕様でなく実装上の問題)とが混同されていて
混乱を招いていた(かなりしっかりしたLispの教科書でも後者を前者と混同して説明していたり、そもそもこれらの問題があることを理解せずに
書かれていたりした

shallow-vs-deepの問題が言語仕様でなく実装上の問題だと正しく且つ明快に言い切った(私の知る限り)最初のLispのテキストは
Lisp実装者だけでなく(当時の)Lispの上級プログラマにとってもバイブルとでも呼ぶべきJohn Allenの“Anatomy of Lisp”

と、まあ長々とした例を批判しながら、長々と書いてしまって申し訳ない

445 デフォルトの名無しさん
2019/08/22(木) 09:46:16.96 ID:xQsiKIbM

説得力皆無の文章になったな

446 デフォルトの名無しさん
2019/08/22(木) 18:48:22.95 ID:s6ROoMqI

力が無いなら金で買えばいい
問題は、相手を説得したい者に課金するか自分を説得してほしい者に課金するか

447 デフォルトの名無しさん
2019/08/26(月) 15:26:16.91 ID:7r1lWQhX

モナドから得た値ででかいレコード初期化したいときってなんかいい書き方ない?
do記法で左矢印で一々変数に束縛してからフィールドに代入とかするのめんどい
レコードワイルドカード使うのもアプリカティブスタイルで書くのもなんかいまいちだし

448 デフォルトの名無しさん
2019/08/26(月) 16:58:37.95 ID:1YvWSZsw

447
理想はどういう書き方をしたい?

449 デフォルトの名無しさん
2019/08/26(月) 17:56:50.34 ID:H+o0BUvr

448
Hoge { fuga =<< piyo }
こんな感じがいいなあ
レコードワイルドカードだと何してんのかぱっと見よくわからなくなるし
アプリカティブスタイルで書くとフィールドの順番変わったりしたときそれに合わせなきゃいけないのがちょっとだけ嫌

450 デフォルトの名無しさん
2019/08/26(月) 17:57:34.01 ID:H+o0BUvr

まちがえた=<<じゃなくて<-

451 デフォルトの名無しさん
2019/08/26(月) 18:35:14.67 ID:FuRqq0AU

そもそも
b <- m
if b then ~
と書かなきゃいけない言語に贅沢言っちゃいかん

452 デフォルトの名無しさん
2019/08/26(月) 20:58:49.90 ID:JCuV3Nd8

ifはアプリカティブを使ってはいけない例か
意図的に書いてるなら頭いいな

453 デフォルトの名無しさん
2019/08/27(火) 11:02:46.95 ID:LbNJg1Kq

C++のnewも一個ずつだ
多変数関数の存在自体がバグみたいなもの

454 デフォルトの名無しさん
2019/08/27(火) 13:49:23.94 ID:aYd+hskG

たしかにむずかしいね。

455 デフォルトの名無しさん
2019/08/27(火) 14:01:37.09 ID:aYd+hskG

レコードでなくMap型ならモノイドで足して上書きしていけるのに。

456 デフォルトの名無しさん
2019/08/29(木) 12:53:50.13 ID:eXCPAcGY

Haskellは数学者のおもちゃの域を超えてないな
実用を考えたらライブラリの豊富なPythonに勝るものはない

457 デフォルトの名無しさん
2019/08/29(木) 13:19:40.08 ID:VY7wxkJm

python にまけるなんていわれるとは

458 デフォルトの名無しさん
2019/08/29(木) 17:00:49.94 ID:ssy8xOLs

456
> Haskellは数学者のおもちゃの域を超えてないな

本当の数学者はHaskellなんて相手にしないよ
Haskellという玩具で喜んで遊ぶのは数学者じゃなくて数学者にあこがれてるだけの単なるプログラマ

459 デフォルトの名無しさん
2019/08/29(木) 19:08:34.02 ID:qkTKPz6x

じゃあ本当の数学者が相手にしてるプログラミング言語はなんなの?

460 デフォルトの名無しさん
2019/08/29(木) 19:11:37.53 ID:CAV+1+Xc

本物の数学者はパソコン苦手な人も結構いる

461 デフォルトの名無しさん
2019/08/29(木) 19:43:16.59 ID:mkieRkek

そこは計算機科学者と読み替えてさしあげろ

462 デフォルトの名無しさん
2019/08/29(木) 21:23:41.46 ID:LSvsCn45

数学基礎論とか論理でしょ
記号遊びに興じてる人々

463 デフォルトの名無しさん
2019/08/30(金) 00:01:54.88 ID:+2ynYkfN

うちの大学の数学科の計算機系(論理とか統計とか確率とか)の教授はhaskellやってるらしい
あと数学科でやるプログラミングの授業はhaskellらしい

464 デフォルトの名無しさん
2019/08/30(金) 00:34:37.35 ID:CazA1DNP

おもちゃとは記号だったのか
記号などなくても実物だけがあればいいという
いわば実物指向

465 デフォルトの名無しさん
2019/08/31(土) 23:29:39.55 ID:DBlAufLH

GHC8.8.1リリースされたね。ナガカッタ
stackで使えるようになるのはいつ頃か

466 デフォルトの名無しさん
2019/09/01(日) 00:15:49.52 ID:3Spoi/4/

418
副作用の有る関数を、副作用の無い関数と同一視する仕組み(IOモナド)の論理的背景とかは理解出来るけど、理解出来なくても使えるしなぁ。。。


419
プログラマーが圏論理解するには手助けになるけど、それ以外の人には返って邪魔かも。

467 デフォルトの名無しさん
2019/09/11(水) 19:32:14.82

ああ!型システム入門─プログラミング言語と型の理論─が埃被ってる!
何年眠っていたんだ!

468 デフォルトの名無しさん
2019/09/15(日) 12:27:59.45 ID:vZVyiJhM

日系メーカで残業続きの日々です。C++を使っています。
Haskell覚えたらスマートな職場に転職するチャンスありますか?

469 デフォルトの名無しさん
2019/09/15(日) 13:02:40.03

Javaでないだけマシでしょう
欲張っては全てを失います
胸を張ってC++コードを書き続けましょう

470 デフォルトの名無しさん
2019/09/15(日) 13:26:30.70 ID:vZVyiJhM

でも所詮日系メーカでプログラミングの向上心持ってるやつなんて上司含めてほとんどおらん
そういう中で品質いいコード書く努力が虚しいんや

471 デフォルトの名無しさん
2019/09/15(日) 14:38:10.94 ID:CYqvBFjr

転職を強く推奨します

472 デフォルトの名無しさん
2019/09/15(日) 14:45:40.26 ID:x41usVyI

まあたとえ誰も評価してくれなくとも
品質のいいコード書いておけばあとでデバッグやリファクタするときに自分が楽よ
Haskell覚えても転職に良いかはわかりませんが
C++の品質は多分上がる

473 デフォルトの名無しさん
2019/09/15(日) 19:41:31.15

Haskellは一体いつになったら速くなるんだ
現状Javaにすら勝ててないじゃないか
関数型お得意の『最適化の余地』を永遠に残したままフィニッシュか!?

474 デフォルトの名無しさん
2019/09/15(日) 20:15:28.04 ID:q43bIxju

こんな非効率な言語がPythonよりは速いって思われてる時点で最適化の賜物だろ

475 デフォルトの名無しさん
2019/09/16(月) 08:42:30.15 ID:N3Stq9G0

関数型言語の最適化の話はOcamlにまかせてある

476 デフォルトの名無しさん
2019/09/16(月) 20:50:11.40 ID:QCellAQp

そういうことならclaspでいいわ

477 デフォルトの名無しさん
2019/09/16(月) 21:37:02.25 ID:7YJTuf9D

475
call-by-valueのOCamlとcall-by-needのHaskellとでは実装法は大きく異なるから最適化技術も両者で大きく異なる
関数的プログラミング言語でもML系諸言語(OCamlやStandard MLなど)やSchemeなどのcall-by-valueセマンティックスに基づく言語の実装は
手続き的(あるいは命令的)プログラミング言語の実装にかなり近いし、例えば命令的言語では最も重要な操作である変数への破壊的代入や
例外処理を言語仕様に追加し組み込むことも特に困難ではない(実際、ML系諸言語やSchemeなどLisp系諸言語は変数への破壊的代入の
プリミティブを有しているし、Standard MLなどは例外処理も言語仕様に最初から組み込まれている)

だが変数への破壊的代入や例外処理といった言語機能をHaskellのようなcall-by-needセマンティックスの関数的プログラミング言語に
追加しようとすると途端にセマンティックスを整合的にすることが困難になる

478 デフォルトの名無しさん
2019/09/18(水) 22:01:35.11 ID:lvPVUcx3

既出ですかね
プログラミングHaskell第2版、いかがですか?

479 デフォルトの名無しさん
2019/09/18(水) 22:33:30.71 ID:EDnCRaxi

478
買ったばかりでまだほとんど読めてないけど、教科書としてよさげ。
GHC前提になったし、古い記法は一掃されたし、分量も増えてる。
第I部はかなり平易な基礎と型クラスあたりまで。
第II部に対話系からモノイドまで持ってきて充実させてる。
ただ如何せん、出版社が弱すぎて、普通の書店になかなか並ばない。
ネット直販ならいいんだけどね。

480 デフォルトの名無しさん
2019/09/18(水) 22:46:56.61 ID:sk3yb4Af

東京だと
ジュンク堂や紀伊国屋でさくっと手に入ったけど
まあ普通じゃないな

481 デフォルトの名無しさん
2019/09/18(水) 23:07:44.70 ID:lvPVUcx3

479 480
ありがとうございます

第1版は持っているのですが、なかなか良いものなので、増補されたのなら是非と思いまして
当該のサイトにも、池袋のジュンク堂にはあるとあったので、寄り道して購入しようかと…

482 デフォルトの名無しさん
2019/09/19(木) 11:55:27.58

第一版持ってて尚第二版買うとかハスケルガチ勢かよ

483 デフォルトの名無しさん
2019/09/19(木) 21:57:13.69 ID:Vqj74yRo

482
ページ数は1.5倍位になってるみたいだし、かなり増補されてたからさ

484 デフォルトの名無しさん
2019/09/20(金) 00:33:53.77

入門はすっとばしてLensとかConduitとか流行ったライブラリの実践例集みたいな本が欲しい
クックブックっていうのかね
なぜ出版社は入門書ばかり刷りたがるのか

485 デフォルトの名無しさん
2019/09/20(金) 00:45:38.23

入門はいいから初心者を鍛えてくれよ
将棋ウォーズでいうと3~1級を初段~三段に上げてくれる本がないよなぁ

486 デフォルトの名無しさん
2019/09/20(金) 06:27:12.22 ID:fTWLEX/y

並列並行haskellは面白かったな
英語苦手なのに無料公開されてた英語版全部読んじゃった

487 デフォルトの名無しさん
2019/09/26(木) 05:11:57.59 ID:dzbET3Zy

結局のところ、rigid type variable ってどんな type variable のことなの?

488 デフォルトの名無しさん
2019/09/26(木) 14:20:58.03 ID:iXd9J4xZ

skolem type variable のことだよ^^

489 デフォルトの名無しさん
2019/09/26(木) 15:49:58.48 ID:fwWuWasU

484
取り敢えず使ってみよう勉強してみようという人間は多いので入門書にはそれなりの部数の需要があるが
実際に入門レベルをクリアしてその先に進む人数は一気に減少するから、その先の技術レベルの内容を扱う書籍は
よほどメジャーな言語でない限り商業ベースには乗らない

それも世界中がマーケットになる英語ならまだしも日本国内しかマーケットのない日本語の書籍となれば尚更ね

490 デフォルトの名無しさん
2019/09/26(木) 18:11:59.76 ID:6j3rqQh6

入門書はどうでもいいことばかり書いてるから買わないことが多い

491 デフォルトの名無しさん
2019/09/26(木) 19:57:03.06 ID:dzbET3Zy

488
じゃあ、rigid = skolem なのか?

ghc のコンパイルエラーメッセージに
rigid で skolem な型変数がどうとか言う文言があるから、
両者は別物のような気がするのだが。

で、skolem とは何なのだ?

492 デフォルトの名無しさん
2019/09/26(木) 20:24:22.90 ID:iXd9J4xZ

491
rigid=skolemだよ
昔skolemとだけ表示されてたんだが、それじゃ分かりにくいというissueが立ってrigidが併記されるようになったらしい

俺もあれがなんなのか知りたい
俺としてはexists a. aみたいな型のことじゃないかと思ってるんだけどよくわからん
わかったら教えて

493 デフォルトの名無しさん
2019/09/27(金) 03:35:50.99 ID:cVD6n+mn

492
なるほど、そういう歴史があったのか。

こういうのこそ、入門書に書いておいて欲しいな。

494 デフォルトの名無しさん
2019/09/27(金) 22:06:15.87

489
資本主義のバグじゃん
パッチ配布はよ

495 デフォルトの名無しさん
2019/10/05(土) 11:54:01.11 ID:7g/R2uPo

型aがMonadならApplicativeでもあるわけですが、
実用的にreturnとpureが異なるというのは有り得るのでしょうか?

496 デフォルトの名無しさん
2019/10/05(土) 14:04:06.04 ID:bu+J3s1i

495
Monad版とApplicative版とで効率化のため内部実装が異なるということは
もしかしたらあるかもしれない(実例は知らないけど)
Monadが自然に誘導するApplicativeなら振る舞いが異なるということはないはず
(標準的なリストモナドに対するZipListみたいな話を気にしている)

497 デフォルトの名無しさん
2019/10/07(月) 22:45:01.48 ID:E8UVlk39

496
> Monadが自然に誘導するApplicativeなら振る舞いが異なるということはないはず

ありがとうございます。
安心しました。

498 デフォルトの名無しさん
2019/10/08(火) 09:34:32.63 ID:pe44plco

モナドでアクションを繋げるってのは何がうれしいの?
参照透過のために仕方なくやってるだけ?

499 デフォルトの名無しさん
2019/10/08(火) 10:35:16.66 ID:pF665SWr

みんなが使う言語の約束事が変更されるまで何年も待つか
一個人が関数を2つ定義するだけで解決するかの違い

500 デフォルトの名無しさん
2019/10/08(火) 16:25:57.34 ID:ELFSZFvj

同じことの繰り返しを書かなくて済むのが大きいかな。

例えばEitherとIOの組み合わせのモナドでハードとの通信を
書いた時,割り込みプロセスを考えなくてもLeftで返せば
後続コードを飛ばしてエラーを返せるし,コード量が減った
だけ,ミスの発生率も低くなる。

これがモナドなしだとハードとの通信をするたびにエラー
確認コードをいれて例外処理やなんやかやをしないといけ
なくなる。

501 デフォルトの名無しさん
2019/10/08(火) 17:47:38.95 ID:pF665SWr

EitherにもIOにもなるような万能のinstanceにロックイン?してよければclass不要
その気になれば任意の言語で応用可能ということ

502 デフォルトの名無しさん
2019/10/08(火) 18:00:48.37 ID:pe44plco

結果的にHaskellの生産性は高いの?
ライブラリや学習情報の充実度を無視するとして

503 デフォルトの名無しさん
2019/10/08(火) 18:17:24.58 ID:ELFSZFvj

少なくともタイプする文字数はめっちゃ減る

504 デフォルトの名無しさん
2019/10/08(火) 18:27:09.94 ID:gcgHRAAu

もう生産性高いとは誰も言わなくなったね

505 デフォルトの名無しさん
2019/10/08(火) 19:31:45.70 ID:pe44plco

文字数が減るのは高階関数のおかげ?

参照透過性によるバグの低減やコーディングのしやすさはどの程度あるんだろうか?

506 デフォルトの名無しさん
2019/10/08(火) 19:37:25.99 ID:4CpPhkv4

巨大になっても線型に複雑度が増加するから他より有利とは言われるが
そこまで大きいの触ったことない

507 デフォルトの名無しさん
2019/10/08(火) 20:09:52.92 ID:pF665SWr

PythonでもHaskellでも、タプルを使うなとか誰も言わなくなれば文字数は減る

508 デフォルトの名無しさん
2019/10/08(火) 20:44:34.15 ID:kGAGzuS0

文字数減ればいいってんならシェルスクリプトかperlが最適だな。

509 デフォルトの名無しさん
2019/10/08(火) 21:24:42.66 ID:ELFSZFvj

"> 505
モナドや高階関数のおかげもあるけど文字数が減るのは
つきつめると言語全体に貫かれた表現の簡潔さ志向の仕様によるかな

参照透過性のおかげで副作用を気にせず共通部分を
気軽に関数としてまとめられるとか

ブロック前後の括弧がいらないとか

再利用や多様な型に適合するように引数や関数の名前を短めにするとか

局所変数がないとか

簡単に二引数の演算子を記号を使って定義できるので
関数名を何度も書かなくて済むとか

いろいろ

書く部分が少なくなるとそれだけケアレスミスの入り込む余地は少なくなるね。
それとS/N比がよくなってロジックを追いやすい。

510 デフォルトの名無しさん
2019/10/08(火) 21:32:14.39 ID:nLwShu/0

何冊か本を読んだけど、Haskell の気持ちがなかなか分からん…

511 デフォルトの名無しさん
2019/10/08(火) 21:39:47.76 ID:ELFSZFvj

何か書いてみた?

自分はRWHとかPCHとか読みながらオレオレプロジェクトを仕立てて
書き進めていったらある日を堺に急にこういうことかと理解が進んだ。

512 デフォルトの名無しさん
2019/10/08(火) 22:21:53.53 ID:nLwShu/0

やはりどんどん書かないとダメですよね…
おかげさまで、本業とする言語でのコーディングには有意義なフィードバックができてはいるのですが
そもそも GHC が吐き出すエラーメッセージがなぁ~

513 デフォルトの名無しさん
2019/10/08(火) 23:04:55.55 ID:ELFSZFvj

自分もエラーが何を意味しているのか最初はわからなかった。

ただほとんどのエラーは型の不一致由来。

だから何行目のどこでエラーが出ているかだけわかればあとは
型を順番に調べていって解決できるようになった。

スペルを間違えたり似たような目的で使う別の型と勘違いしていたり
とかそれなりの理由でエラーが出ているはず。後者は代数データ型を
適当にその場で作ったりしてた頃によくやってた。

514 デフォルトの名無しさん
2019/10/08(火) 23:09:06.98 ID:DA/zVK7z

LispとHaskellの間には謎の暗黒時代があるから
結果がすべての人にはそれがわからんのです

515 デフォルトの名無しさん
2019/10/08(火) 23:13:57.88 ID:ELFSZFvj

その暗黒時代にSMLの本を店頭で見かけて気になった記憶がある。
結局買わなくていきなり普通のHaskellまでとんだ。

ソースから実行コードにどんなふうにおとしていってるのか最近
気になってきたのでそのうち古本でMLの本でも手に入れるか
GHCのが吐くコードを追っかけてみたい。

516 デフォルトの名無しさん
2019/10/08(火) 23:33:07.01 ID:nLwShu/0

513
ありがとうございます 512 です
皆さん同じような苦労をされているのかなと、少し楽な気持ちになりました
もう少し粘り強く取り組んでみます!

517 デフォルトの名無しさん
2019/10/08(火) 23:42:31.20 ID:ELFSZFvj

どういたしまして!

基本文法は簡単だから文法エラーはすぐにほとんど出なくなります。

そこまでいったら初級編終了。

518 デフォルトの名無しさん
2019/10/09(水) 00:44:23.02 ID:UKqTo/lR

圏論の本を読もうと思ったら数学地獄にはまる

519 デフォルトの名無しさん
2019/10/09(水) 22:12:42.71 ID:wrHKsVK1

VIMで関数名にカーソル合わせると自動で型シグネチャ動的推論して表示してくれる機能ありませんか?

520 デフォルトの名無しさん
2019/10/10(木) 00:08:02.64 ID:TcPJYaG5

ダイクストラのアルゴリズム
優先度付きキューの手作りから始めて一週間かかってやっと完成した

あたまわーるわるわーるーわる~♪
sm32181836
脳裏に流れてる

521 デフォルトの名無しさん
2019/10/10(木) 09:37:00.35 ID:yMym0WfO

善意的に解釈してアルゴリズムの方の動画だと思ったが
案の定あたまわるい方の動画だった

522 デフォルトの名無しさん
2019/10/10(木) 19:26:23.87 ID:yuHTWGdR

practical haskell second edition読み終わった

523 デフォルトの名無しさん
2019/10/11(金) 18:25:28.60 ID:NJkU4MQ7

Haskell Wiki
!haskellwiki
Hayoo
!hayoo
Hoogle
!h
Hackage
!hkg
Hoogle at Stackage
!stackage
https://duckduckgo.com/bang?c=Tech&amp;sc=Languages+(Haskell)

524 デフォルトの名無しさん
2019/10/11(金) 20:15:13.77 ID:NJkU4MQ7

アマゾン.co.jp
!ajp
https://learning.oreilly.com/home/
!orly
O'Reilly
!oreilly

525 デフォルトの名無しさん
2019/10/12(土) 00:29:02.70 ID:mt88ZJv+

510

mylist 3 = [[1,2,3],[4,5,6],[7,8,9]]

みたいなリストを作る関数をHaskellで作ってみれば関数脳に目覚める。
割とマジで。

Haskell入門以前って電子書籍で書いたが、自力で目覚めるなら買わなくても良い。
(Haskell入門書読んでも宣言的とは?関数脳とは?がピンと来なかった経験から書いた)

526 デフォルトの名無しさん
2019/10/12(土) 00:42:17.63 ID:67yl+yJ3

パッと思いついたのはこんな感じ?
添削してくれたら嬉しい
HaskellでなくPureScriptだが

mylist :: Int -> Array (Array Int)
mylist n = do
i <- 1..n
pure [i*3 + 1, i*3 + 2, i*3 + 3]

527
2019/10/12(Sat) 01:48:37 ID:gzpbrH7N

">525
コメントありがとうございます!
">510です

ひねりなしですが…

mylist :: Int -> [[Int]]
mylist n = chop n [1..n^2]

chop :: Int -> [a] -> [[a]]
chop _ [] = []
chop n xs = take n xs : chop n (drop n xs)

chop は、直近に読んだ書籍からそのままアイデアを拝借しましたが、カンニングなしで書きました

[1..] のように、無限リストで書けたらと思いましたが、酒気帯びなためダメでした

IO の純粋って、のようなことがサッパリです…

528 デフォルトの名無しさん
2019/10/12(Sat) 02:00:10 ID:iYZ0+U57

">527
うーん・・・。
貴方はまだ手続き脳ですね。
(その手順でも関数脳を実感する人は実感するのでしょうが)
罰としてHaskell入門以前をご購入下さい。

IOの純粋は、「プログラマーのための圏論」と言うPDFがネットにあるのでググって読んでみると良いです。

529
2019/10/12(Sat) 02:20:05 ID:CTFV4tiX

(n: number) => Array.from(Array(n).keys()).map(
  i => Array.from(Array(n).keys()).map(
    j => n * i + j + 1
  )
)

530 デフォルトの名無しさん
2019/10/12(土) 02:25:29.50 ID:gzpbrH7N

528
510です
では、

mylist :: Int -> [[Int]]
mylist n = take n (chop n [1..])

531 デフォルトの名無しさん
2019/10/12(土) 02:33:17.76 ID:gzpbrH7N

528
510です
コメントをつけ忘れましたが、ご紹介いだいた圏論のレポートは、以前にちょっと目を通したことがあったと思いますが、サッパリだった記憶が…
あらためて拝見します
ありがとうございます!

532 デフォルトの名無しさん
2019/10/12(土) 08:28:10.44 ID:oBt8QHPo

530
ちょっとchopと[1..]から離れましょう。
そして、[1..n]に何をすれば次のリストを得られるか考えましょう。
プレリュードの(入門以前と書かれた通り)基本関数の組み合わせだけで書けます。

IOと言うより入力ですが、関数の引数か、外部からの入力かだけで中身の処理は普通の関数と同じと捉えましょう。
そうするとreadLine関数が部分適用で見た目の引数の減った普通の関数に見えて来ませんか?

圏論で謳っているのは、どこから来たかが違っていても同じ事をするなら、同じ関数と見なそう。
そう言う、ある着目点以外の差異を無いものとするという事です。

533 デフォルトの名無しさん
2019/10/12(土) 11:27:51.29 ID:/Y14moqf

510 です

mylist n = take n $ f [[1..n]]
where
f [ns] = ns : f [g ns]
g ns = map (+3) ns

としたところで、要素に f を繰り返し適用して無限リストを作る関数があることを思い出し、思い出せずにカンニングして iterate を発見

mylist n = take n $ iterate f [1..n]
where
f ns = map (+n) ns

map (+n) 辺りがどうも…

534 デフォルトの名無しさん
2019/10/12(土) 11:28:38.29 ID:/Y14moqf

インデントの空白が消えるのか

535 デフォルトの名無しさん
2019/10/12(土) 11:30:28.30 ID:/Y14moqf

間違えた、先の関数の (+3) は (+n) でした

536 デフォルトの名無しさん
2019/10/12(土) 14:40:27.19 ID:IkOZzxfL

文字数が減る主義を粛清した結果がこの関数脳内革命なのか?
文字数が減るでよかったのに

537
2019/10/12(Sat) 19:37:37 ID:Qwy8j330

">525
あの本出版した人?
いくら稼げた?

538
2019/10/13(Sun) 08:24:39 ID:joWtBDzr

競プロでもあるまいしアルゴリズムを非直観的なものに変形させる必要がどこにある?
そんなに漸化式が好きなら iterate (\xs -> [last xs+1,last xs+2..last xs+n]) でもやってろ

539
2019/10/13(Sun) 12:28:55 ID:vnXjj3sR

プログラミング運算やると計算量がオーダーレベルで変わるよみたいな話もあるから
非直感的な宣言をすることがいつも無駄とは限らないだろう
今スレで話題になってる例が教育的によいかどうかはわからんが

540
2019/10/13(Sun) 12:35:18 ID:rWBm0O/W

効率的な計算量になるようにコンピュータが計算して最適化してくれたらいいのに

541
2019/10/13(Sun) 14:20:50 ID:8ABqNncq

なにしてんの
mylist n = [ [(m - 1) * n + 1 .. m * n] | m <- [1 .. n] ]
とかじゃだめなの

542
2019/10/13(Sun) 14:25:29 ID:8ABqNncq

ただでさえO(n^2)なのにiterateとかやったらO(n^3)じゃん

543 デフォルトの名無しさん
2019/10/13(日) 15:19:23.66 ID:joWtBDzr

mylist n = take n $ chunksOf n [1..]
がダメらしいからそれもダメなんじゃない?知らないけど

544 デフォルトの名無しさん
2019/10/14(月) 07:17:52.00 ID:Foao1gEl

537
7000円


533
手続き型言語をやっていると非直感的ですが、そうで無い人(プログラミング未経験含む)だと割とこっちもメジャーなので、こっちが浮かぶのが関数脳を作れた基準?にしてます。

545 デフォルトの名無しさん
2019/10/14(月) 13:10:48.92 ID:dTytwEqk

n個の品物が入るナップサックがn個あって
1,2,3...と番号の書かれた品物を順番にいれていく
等々いくらでも行動的比喩が可能な問題に対して数式的に考えることが自然ねぇ・・・
まあ人間の思考傾向を議論するつもりはないけど
少し考えればシンプルに解ける問題は少し考えろと主張をしたいんだとしても
我々手続き的ゾンビにとってmylistの例が「直観性」を犠牲にするほどシンプルだとは思えないけどね

546
2019/10/15(Tue) 00:51:42 ID:ojqSK/Hb

チューリング完全なもの同士は等価である
Haskellと他の言語が等価であることを直感的に表現しているのがモナドだ
この文脈ではモナドが直感的だと思わない奴の直感はあてにならない

プログラミング未経験者ってのは文脈無視するのを正当化するための道具にされてるだけだろう

547
2019/10/15(Tue) 08:43:19 ID:NwqFzBSd

隠そうとして隠し切れなかったのがモナド

548 デフォルトの名無しさん
2019/10/16(Wed) 01:24:19 ID:N7kCHTAD

モナドっていうネーミングも謎

549 デフォルトの名無しさん
2019/10/16(水) 01:58:12.16 ID:1kZaANyW

ニョモレとかムニャンプの方が良かった?

550 デフォルトの名無しさん
2019/10/16(水) 02:26:39.80 ID:lWzU93N+

モノ モノイド

551 デフォルトの名無しさん
2019/10/16(Wed) 22:21:13 ID:N7kCHTAD

モナド=単一子=世界の究極の根本要素

でもHaskellのモナドは外部とのやり取りを隠蔽してる脇役みたいなものでしょ

552
2019/10/16(Wed) 22:25:37 ID:S+gc310a

無理やり型合わせするためだけの言い訳だな。
くっだらねーとしか思わんかったわ。

553
2019/10/16(Wed) 23:44:14 ID:5hxXU1b8

そう思ってでもまだこちらをのぞいているってことは
かなり気に入る・気になる部分もあったんだよね。

どんなところがよかったの?あるいは気になったの?

554 デフォルトの名無しさん
2019/10/17(Thu) 03:04:05 ID:Xwvn1Enx

CSで使われる用語って何かのめたふぁか知らんけど
無理に数学に合わせて造語っててかえって判り難さが増すというね

555 デフォルトの名無しさん
2019/10/17(Thu) 03:47:00 ID:qaCXzdDd

モナドが分からんという人が多いのは
哲学のモナドと混同してるからだろうな
全く無関係の別物だと理解する必要がある

556
2019/10/17(Thu) 04:08:11 ID:UnH0fUML

いやそれはない

557 デフォルトの名無しさん
2019/10/17(木) 06:05:35.66 ID:gq3I2ckq

モナドはわかっても何が凄いのか全然わからん教えてくれ

558
2019/10/17(Thu) 07:39:25 ID:fFU5Cjed

哲学と数学の違いは「嘘を言ってはいけない」という点にどこまで集中するかの違い
すごいものを作るより有害なものを作らないことをどのぐらい重視するか

559 デフォルトの名無しさん
2019/10/17(木) 08:37:09.64 ID:n/9LzeKG

たしかにモナドすごいすごいって言う人っていざ説明させると説明できないよねw
せいぜい受け売り止まり

560
2019/10/17(Thu) 09:27:30 ID:PVi4YySF

では説明お願いします

561
2019/10/17(Thu) 09:56:17 ID:Gwz4u+oG

受け売り止まりじゃない説明はよ

562
2019/10/17(Thu) 10:16:38 ID:kLoaz8mV

モナドはただのデザインパターンの一つだろ

563 デフォルトの名無しさん
2019/10/17(木) 10:44:35.23 ID:n/9LzeKG

560
俺は話聞いてるだけ
強引なHaskell推しに困ってる

564 デフォルトの名無しさん
2019/10/17(木) 10:44:48.97 ID:UnH0fUML

モナドほどの抽象化しただけで画期的じゃん
イテレータとか用意してデータ構造によらないコンテナへの共通インタフェースとさらにそれへの特別なシンタックスシュガー用意した言語ぐらいならあった
モナドなんか用意してdo記法なんてシンタックスシュガー用意してプログラミング言語における手続き的処理やその他諸々を抽象化した

565
2019/10/17(Thu) 10:57:50 ID:8XbgiZIP

抽象化できてるか?
手続き型と同じっぽく見えるけど、いざ活用しようとすると同じようには使えなくて意味不明な型エラーで詰まる
結局のところモナドの仕組み理解できてないと使いこなせない
これは抽象化できてないってことでしょ

566
2019/10/17(Thu) 11:46:58 ID:UnH0fUML

そりゃ任意の手続き型言語を再現できるわけではないから完全な抽象化ではないけど

手続き型的な処理とか、失敗する可能性のある処理とか、非決定的処理だとか、そう言った諸々をまとめてモナドとして一般化してる
そのおかげでそれら全てで共通にdo記法やモナド向けの関数といったものが使えて、各種毎に個別に関数を用意したり覚えたりする必要が減る

自作のDSLなどを構築するときにも
モナドインタフェースを実装するだけでdo記法やモナド向け関数群を使えるようになる
他言語でDSL構築は結構大変だし、オレオレDSLなんてどういう仕様かわかりにくいけど、haskellなら型から検索したり型を見たりすることでどういうアクションがあってどうやって使うのかがわかる

567
2019/10/17(Thu) 11:49:22 ID:fFU5Cjed

これがC++だったらJavaScript環境を作ってC++の仕組みを隠蔽するかもな
Haskellでも同じことをする自由はある

568 デフォルトの名無しさん
2019/10/17(木) 21:34:43.47 ID:AvAuJv6u

関数脳になるとどんな利点があるのかな?
手続記述は使い回ししにくい?

参照透過性が確保されていて型の情報があれば
算法の記法が手続き的か定義的かを問わず
どちらでもいいような気もするが

569
2019/10/18(Fri) 00:47:49 ID:Jux/affY

">551
Haskellのモナドって関数型で命令的な処理の書き方をしたいってことだろ
要するにLispにPROGフィーチャー入れたのと同じような動機だろ

570
2019/10/18(Fri) 06:44:38 ID:lM5JoyFV

">562
絶対違う

571 デフォルトの名無しさん
2019/10/18(Fri) 09:49:47 ID:F+Okgjq/

">569
全然違うんだよなぁ…

572 デフォルトの名無しさん
2019/10/18(Fri) 12:21:22 ID:cHgwfEPK

コンストラクターがオーバーロードできないから別の列挙型に同じタグ名がつけれないんだけど
どうしたらいい?

573
2019/10/18(Fri) 12:40:18 ID:B/ouUg1P

">569
学び始めはそう理解したが bind 演算子とか融合とか進んで
現時点では切り分けや共通化の便利な道具と思ってる

574
2019/10/18(Fri) 12:41:41 ID:B/ouUg1P

">572
自分だったら根本的な構造を見直すかな

575 デフォルトの名無しさん
2019/10/18(金) 17:04:05.16 ID:lM5JoyFV

574
kwsk

576 デフォルトの名無しさん
2019/10/18(金) 20:30:34.81 ID:O9SciFl2

572
DuplicateRecordFields 拡張を使うとできるようになるっぽいよ。
http://lotz84.github.io/haskell/extensible-record.html

577 デフォルトの名無しさん
2019/10/18(金) 20:44:14.39 ID:lM5JoyFV

576
俺も一瞬それ思ったけど同名データコンストラクタもできたっけ?

578 デフォルトの名無しさん
2019/10/18(金) 21:22:19.66 ID:O9SciFl2

577
コンストラクタの方か。見間違えてた

579 デフォルトの名無しさん
2019/10/18(金) 22:18:25.57 ID:O9SciFl2

data 宣言を別モジュールに分けて
両方が必要なら import ... as ... で別名をつけるって方法はどう?

580 デフォルトの名無しさん
2019/10/18(金) 22:56:52.03 ID:liCy40EB

モナドを導入することで副作用のない
「副作用のチェーンをつくって渡す。」
ちなみに実行は副作用させるというバカみたいなレトリックを実行してるだけ。
バカはそういうものをありがたがるんだよ。
そしてそういうものをありがたがるというのはバカみたいに本質なんだな。

581 デフォルトの名無しさん
2019/10/18(金) 23:39:51.57 ID:CSj9zhCF

モナドのごとく回りくどく分かりにくい文だな

582 デフォルトの名無しさん
2019/10/19(土) 00:07:09.37 ID:0X24TT//

575
Haskellは個人の趣味・自己啓発の道具の範疇なので
参考にならないでしょうが…

名前がかぶるのはどこか機能がかぶってたりするかなと
型の使い方を見直したり組み合わせる関数を見直したり
所属するモジュールを移動したりとか。

どうしても名前がかぶるってときは英語名や日本語名
ときには中国語とかも借用する(ただし英字を使う
ローマ字やピンイン表記)か密接に関係する事柄の
接頭辞をつけてる。

583 デフォルトの名無しさん
2019/10/19(土) 00:15:25.34 ID:0X24TT//

580
モナドで副作用・副作用もどきを扱えるけど
モナドの全てが副作用・副作用もどきを伴う
わけではないでしょ。

リストもMaybeもEitherもモナドとして扱う
定義はされているが別にそれをつなげても
副作用があるわけでなし。

584 デフォルトの名無しさん
2019/10/20(日) 21:44:47 ID:5Lp8lBZ6

非決定計算やIOが同じモナドというククリで実現できるのが大変興味深いです

585
2019/10/20(日) 23:54:14 ID:Wg020iKs

なぜそんなにお前らがモナドについてあーでもないこーでもないと話し合ってるのかがわからない
モナドなんていたってシンプルな考え方なのに

モナドなんて単純にどうやって関数を合成するかというルールにすぎない
より正確には、「モナディックな関数」を合成するルール

では、モナディックな関数とは?それは"装飾された値"を返す関数のこと。
どんな装飾が施されたかについては、文脈によって様々だが、たとえば…

・エラー -> 失敗を表すデータもとりうる値 MaybeとかEither Error
・非決定性 -> いくつもの値を同時に表す値 List, Array
・副作用 -> 副作用自体を表すデータ Effect, Aff
・状態を扱う -> 状態を表すデータとセットになった値 Reader , Writer, State

586
2019/10/21(月) 00:25:00 ID:4Py1bsIM

シンプルな考え方合成ルールといいつつ
肝心のルールの中身を説明しないで
利点や応用分野のみ紹介する
典型的な日本人話法

モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?

587
2019/10/21(月) 00:50:05 ID:tyOGJJBt

いやだから装飾のされ方は物によって様々だって言ってるじゃん
ルールの中身も当然装飾のされ方によって様々なんだから画一的に述べられないってわからないか?

一つ言えるのはbindとpureの定義を与えるってことくらいだが
あるいは同値な定義だが、関手であることを要請した上でjoinとreturnを与えるのでも構わない
数学者のモナドの定義を述べているお前ならこっちのほうが好みかもな

588 デフォルトの名無しさん
2019/10/21(月) 11:02:55 ID:Spzp+9MC

「自己関手の圏」の中身を説明しないからわけがわからない
関手の合成は積?
恒等関手は単位対象だが終対象ではない?
うっかり始対象になったりしたらそれ積じゃなくて和じゃないか

589 デフォルトの名無しさん
2019/10/21(月) 12:39:15 ID:4Py1bsIM

中身は数学で明示されてるのでは

590 デフォルトの名無しさん
2019/10/21(月) 14:07:32.87 ID:Fq1X48Cm

自己関手の圏におけるモノイド対象としてモナドを理解することは、必ずしもプログラミングのためになるものではないから必須ではない。

それでもそれを理解したいのであれば、プログラミングの文脈で理解するのではなくて、ちゃんと圏論の文脈で理解した方がいい。
Bartosz MilewskiのCategory theory for programmerがわかりやすくておすすめ。

591 デフォルトの名無しさん
2019/10/21(月) 14:17:03 ID:2JzHnDoh

【僕用メモ】

・bind と pure の定義を与える
・関手であることを要請した上で join と return の定義を与える

両者は同値である。

592 デフォルトの名無しさん
2019/10/21(月) 14:44:27.76 ID:VTam/Iyy

だめな理系人間の特徴
初学者に対してひたすらwhatを説明
だいたいコミュ障を併発してる

593 デフォルトの名無しさん
2019/10/21(月) 14:53:31 ID:c9dhXgWB

この人のことか
http://masa-lab.hateblo.jp/entry/2019/02/01/110041

594 デフォルトの名無しさん
2019/10/21(月) 15:19:59.07 ID:ZzgPuxVR

593
そうでもなくね? っていうか内容がHaskellに関係なかったw

595 デフォルトの名無しさん
2019/10/21(月) 15:38:45 ID:E4DE6I01

お前らって圏論なにで勉強したの
英語の本読んだの?大学の授業とかで習ったの?

596 デフォルトの名無しさん
2019/10/21(月) 15:49:09 ID:niRnsl0k

数学の本買って独学

597 デフォルトの名無しさん
2019/10/21(月) 16:22:57 ID:5+ah6i6T

知らん用語が出て来るから初学者で戸惑う人が多いだろうが
内容は小学生でも理解出来るレベル

598 デフォルトの名無しさん
2019/10/21(月) 16:52:11.20 ID:D03iscrb

Basic Category Theory, Tom Leinster 
英語で読んだ

599 ◆QZaw55cn4c
2019/10/21(月) 22:01:25 ID:lW7UmcA6

">598
翻訳でもない和書ってありませんかね…

600 デフォルトの名無しさん
2019/10/22(火) 02:26:17 ID:Y6ckqEQv

">595
数学教室 πの焼き方と、プログラマーのための圏論。
ただ、読んだ後に意味を吟味して閃きが必要だった。

まず普通の関数とモナドな関数を同じと見做す考え。

IOモナドの入力は基本、文字列を受け取るので数文字列を受け取って、整数に変換後2倍する関数を作るとする。

getLine ">= \s -> return $ 2 * read s

これと同じ効果の普通の関数を作ってみる。

getLine’ s = 2 * read s

このgetLineとgetLine’をそれぞれ部分適用で見かけの変数を減らす形に変形。

getLine ">= return.(2*).read

getLine’ = (2*).read

この場合、2つの関数は型と引数からの入力か入力装置からの入力かしか違いがない。
関数の中身から見れば、いつ、どんな文字列が来るか分からない。同じ数文字列が来たら同じ結果を返すと言う意味では同じと見なせる。

601 デフォルトの名無しさん
2019/10/22(火) 02:26:29 ID:Y6ckqEQv

そして、圏論の主張は変数は引数無しの関数でも有ると言う事。
以下は関数である。

f x = 2 * x

しかし、部分適用されたカリー化関数は関数でもあり、変数でもある。

f = (2*) (関数でもあり、関数という値を返す変数でもある)

すなわち、x = 1のようなただの変数も、つねに1を返すxと言う引数の無い関数と見なせる。

x = 1 (1と言う値の入った変数であり、常に1を返す引数無しの関数でもある)

Haskellでは表現できないものの、さらに言えば数そのものも圏論では値であり、変数であり、関数である。
単純に書くと以下の通りだが、

1 = 1

ペアノの公理(ペアノ数)を使った方が概念的に分かりやすいかも知れない。

data Nat = Zero | Succ Nat

1 = Succ Zero

602 デフォルトの名無しさん
2019/10/22(火) 03:15:18 ID:Id5sXRgE

ちぃOrdの使い方覚えた

https://ideone.com/LForVF

603 デフォルトの名無しさん
2019/10/22(火) 07:00:59.60 ID:bWQbmCi2

590
youtubeにある彼のビデオレクチャーも良いよ

604 デフォルトの名無しさん
2019/10/22(火) 11:37:49.35 ID:QfoZv31s

モノイドのところがよくわからんかったけど読み物として面白かった
https://chrispenner.ca/posts/wc

605 デフォルトの名無しさん
2019/10/22(火) 13:56:22.87 ID:bWQbmCi2

604
ちょっと待て
モノイドのところが一番の肝で面白い部分だろ

606 デフォルトの名無しさん
2019/10/22(火) 21:21:34.69 ID:r5HMg/cf

601
>数そのものも圏論では値であり、変数であり、関数である。

もしその様な表現が可能な拡張がされた場合何が起きる出来るんですか?
数値に新規の型を設定して値で変数で関数みたいな扱い出来ないかな

607 デフォルトの名無しさん
2019/10/22(火) 21:31:09.36 ID:mzkWHCb9

圏論うろおぼえだけどそれって圏論の範疇だっけ?
圏論ってマッピングする理論であってその対象が値か関数か変数か関知しないのでは?
値が関数ってのはラムダ計算から来るものでしょ
確かにそれらを組み合わせて計算理論になるわけだけど

608 デフォルトの名無しさん
2019/10/23(水) 02:22:17.73 ID:yKBkbeD2

601
お前が圏論を全く理解していないことは良くわかった

圏論には「関数」とか「値」とか「変数」といった概念はない
「対象」と「射」との2つの概念があるだけだ

だからお前の次の

>数そのものも圏論では値であり、変数であり、関数である

これは単なる間違いさえ通り越して全くのナンセンス
圏論には値も変数も関数も存在しないのだから

何を対象として何を射とするかは個々の具体的な圏によって異なる

609 デフォルトの名無しさん
2019/10/23(水) 02:25:20.92 ID:yKBkbeD2

608
ああ、ちょっと簡単に書きすぎたね
確かに関手

610 デフォルトの名無しさん
2019/10/23(水) 02:29:17.74 ID:yKBkbeD2

609は書いてる途中で間違って送信してしまった

608
ああ、ちょっと筆(じゃなくてキーボード)が滑って簡単に書きすぎたね
確かに関手とか自然変換といった概念も圏論にはあるが、これらもある圏から見れば射や対象に過ぎない

いずれにしても圏論には値や関数や変数といった概念はない

611 デフォルトの名無しさん
2019/10/23(水) 03:34:04.69 ID:yprcaBdP

では何らかの制限がないと取り扱いが難しいよね
例えば英語と日本語の翻訳で使われる意味を咀嚼変換するロジックを圏論だと言われたら
なんか凄く難しそうだなとか

612 デフォルトの名無しさん
2019/10/23(水) 07:48:02.01 ID:w9X9/NZW

別に集合論だって写像の集合を考えればいいわけでそんなのは圏論を持ち出さなくても十分
重要なのは圏論は写像の合成(関数合成)を抽象化して扱う理論だということで
だからこそa -> IO bを射とする圏を作れればそこでの射の合成方法は普通の関数合成と同じように扱える
で実際にIOはクライスリトリプル(Monadのインスタンス)を定義できるからa -> IO bを射とするクライスリ圏が定義できる

613 デフォルトの名無しさん
2019/10/23(水) 15:46:04.24 ID:QE7mhz5K

質問です。
当方数学科卒で学生時代圏論は死ぬほど使ってました。
しかしアーベル圏という純数学的なお話知ってるだけで、計算論に応用する話は全く勉強した事ない状態です。
そういう人間が圏論の計算論への応用を勉強したいときオススメの教科書、参考書は何かご存知ですか?
抽象圏論や数学基礎論も少しかじった事があるのでその手の話が出てきてもあまり困る事はないと思ってます。

614 デフォルトの名無しさん
2019/10/23(水) 18:37:44.76 ID:EHUlBTzl

そこまで圏論に詳しいなら逆に世の中の有象無象の情報処理の実態を
見て新しい提案ができるんじゃないかと思うけどどう?

615 デフォルトの名無しさん
2019/10/23(水) 18:48:53.05 ID:FecPQc4e

型推論とモナドがわかったら解散でいいじゃん
だらだら続けるとサンクコストが増える

616 デフォルトの名無しさん
2019/10/23(水) 20:01:33.78 ID:r6mLYpNF

浮動小数演算みたいなある種のモナド則が成り立たんものを考えると、
逆にモナド則のありがたさがわかる。
そんな程度で十分だよ。

617 デフォルトの名無しさん
2019/10/23(水) 22:29:52.97 ID:0mQ7NQWB

どちらかと言えば、モノイドの方が役に立つ

618 デフォルトの名無しさん
2019/10/23(水) 22:51:28.42 ID:MhItXVwr

浮動小数点のモナド?
モナド則の結合律っぽい奴は普通の関数で言うなら
f (g x) == (f . g y) x を要請してるのであって
f,gの計算には依存しないから浮動小数点が破壊することはないよ

619 デフォルトの名無しさん
2019/10/23(水) 22:55:47.94 ID:MhItXVwr

ミス f (g x) == (f . g) x だった

620 デフォルトの名無しさん
2019/10/24(木) 01:14:02.96 ID:iVnwkALy

f x = x / 0.3
g x = x * 0.3

621 デフォルトの名無しさん
2019/10/24(木) 01:19:57.43 ID:iVnwkALy

ghci でやってみたら循環小数にならなかった。macOSの電卓でも。
へぇ~。

622 デフォルトの名無しさん
2019/10/24(木) 01:57:21.20 ID:/X6zPP1d

613
> そういう人間が圏論の計算論への応用を勉強したいときオススメの教科書、参考書は何かご存知ですか?
> 抽象圏論や数学基礎論も少しかじった事があるのでその手の話が出てきてもあまり困る事はないと思ってます。

理論計算機科学(以下、TCSと略)への圏論の応用を勉強したいのならば、最もベーシックなテキストとしては

1. Andrea Asperti &amp; Giuseppe Longo: Categories, Types, and Structures, 306+xii pp., MIT Press (1991)
型理論として単純型付きλ計算と2階の型付きλ計算それぞれに対する圏論的意味論を議論している他、
型無しλ計算の意味論を展開する上で不可欠な再帰的領域方程式とその解に対する圏論的な見方も解説している。
更にHaskellなどで喧しいモナドやKreisel圏についても解説している。(関数プログラミング言語へのモナドの応用は
本書の著者の1人であるLongoの論文から全てが始まった)
この本の最大の欠点は誤植がとても多いことと昔のMacで書かれていてテキスト中の数式も図も美しくないことだ。
なお、現在は書籍としては品切れになっていたと思うが、著者のHPから電子的に無料で入手可能になっていたはずなのでネットで探して下さい。

2. Roy L. Crole: Categories for Types, 335+xvii pp., Cambridge University Press (1993)
様々な型理論(型理論は(関数)プログラミング言語とその型システムを形式的体系としたものと考えて良い)に対する圏論的意味論を議論している。

3. 横内寛文:プログラム意味論,261+vi pp.,共立出版 (1994)
久しく品切れになっていたが少し前に増刷されたので現在はジュンク堂などの大型書店などの店頭で買えるはず。
表示的意味論、型無し・型付きλ計算、領域理論、関数型言語の意味論について1つずつ章を設けて解説した後、この本で必要とする圏論の解説がされ、
プログラミング言語の表示的意味論で必須の再帰的領域方程式とその解法に対する圏論からのアプローチと
λ計算の意味論としてλモデル・λ代数・圏論的モデルとしてのCCC(デカルト閉圏あるいは積閉包圏)について解説している。

この他にもTCSへの圏論の応用としてはオートマトン理論への応用や代数的仕様記述言語の意味論への圏論の応用
(こちらの意味論ではデカルト閉圏は使われない)などがある。

623 デフォルトの名無しさん
2019/10/24(木) 02:41:27.79 ID:/X6zPP1d

622訂正と補足

まず1に関する説明中の次の箇所を訂正します。つい筆が滑ってKleisliをKreiselと書いてしまった。

誤> 更にHaskellなどで喧しいモナドやKreisel圏についても解説している。(関数プログラミング言語へのモナドの応用は
正> 更にHaskellなどで喧しいモナドやKleisli圏についても解説している。(関数プログラミング言語へのモナドの応用は

それから、

> なお、現在は書籍としては品切れになっていたと思うが、著者のHPから電子的に無料で入手可能になっていたはずなのでネットで探して下さい。

と書いたが、無料の電子版は著者の一人であるLongoの次のURLよりPDFファイルの形で配布されている。

https://www.di.ens.fr/users/longo/files/CategTypesStructures/book.pdf

624 デフォルトの名無しさん
2019/10/24(木) 09:09:56.34 ID:M5uvwdA8

618
浮動小数においては
(a+b)+c != a+(b+c)
なんだよ。

625 デフォルトの名無しさん
2019/10/24(木) 19:35:38.99 ID:iMDLzbYl

624
だからこそ「モナド則の結合律のこと言ってるの?あれは関数合成的な話だから関係ないよ」
って言ってるんだけど
ああもしかして616は結合律一般について言ってるのか?
それならアスペみたいなこと言って悪かった
いやまさか四則演算の結合律の便利さから
printFile file = readFile file ">= putStrLn
printFile == readFile file ">= putStrLn
になることの利点を理解しろという主張だとは思わなかったからさ・・・

626 デフォルトの名無しさん
2019/10/24(木) 19:42:56.62 ID:M5uvwdA8

いやモナド則で語ることなんて結合律以外ないだろ。。
結合律を無条件で仮定できる状況がどれほど負担を減らすかって話なんだが
ここまでバカな絡まれ方するとは思わなかった。

627 デフォルトの名無しさん
2019/10/24(木) 19:50:34.49 ID:iMDLzbYl

ああ、printFile file == readFile file ">= putStrLn だった
しかもそれも誤解しか生まない表現で
要はreadFile file ">= putStrLnをprintFileで置き換えても問題ないってことを言いたかったんだけど
いやほんと5ch向いてないね

628 デフォルトの名無しさん
2019/10/24(木) 20:08:28.59 ID:3BngmFUW

627
なんか、あんたは気持ち悪いね

629 デフォルトの名無しさん
2019/10/24(木) 20:16:05.76 ID:iMDLzbYl

626
いやほんと頭が悪くて申し訳ない
「足し算の結合律って便利でしょ?モナド則も結合律だから便利なんだよ」
こんな糞みたいな主張をする人間が世の中にいることぐらいは分かっておくべきだった

630 デフォルトの名無しさん
2019/10/24(木) 20:22:28.52 ID:y9mzZKfZ

単位元を語ってもええんやで

631 デフォルトの名無しさん
2019/10/25(金) 04:29:07 ID:2bZjXkn1

">629
前提として「足し算の結合律って便利だね」
じゃ足りないの
何が不足なのかな
副作用をモナドの結合連鎖外に及ぼさない事による恩恵が主目的じゃないの?
とくにマルチスレッドコア環境だと色々有難いよね
モナド連鎖の組み合わせとか組み替えとかがスカッとできてイイ!とか
連鎖の中で起きたエラーのリカバリーとかはよくわからん

632 デフォルトの名無しさん
2019/10/25(金) 08:07:43.53 ID:39WP6mHi

631
モナドが実際の所どれぐらい便利なのかは分からないけど
(m ">= f) ">= g == m ">= (\x -> f x ">= g)
が言ってることは単純なんだよ
">=が普通の関数呼び出しのように使えるというだけ
$(普通の関数呼び出しを演算子化したもの)の場合を考えれば分かりやすいかな
g $ (f $ x) == (\y -> g $ (f $ y)) $ x
関数と値の引数が$と">=では逆だから両辺が逆向きになってるけど
要するに二つの関数を一つの関数まとめても構わないという
誰もが当たり前にやってることの理論的基盤を">=にも要請してるというだけなんだよ
だから getLine ">= printFile と getLine ">= readFile ">= putStrLn
が同じだと言うためにはこの結合律を満たさなきゃならない
ちなみに二個以上の関数をまとめ上げる場合や多引数の場合もこれで証明できる

633 デフォルトの名無しさん
2019/10/25(金) 08:33:13.53 ID:2bZjXkn1

632
モナドの条件が成立すると色々便利な事は認識している
端緒の認識はそれで問題ないと思ったけど
便利だよねって見解が
>こんな糞みたいな主張をする人間が世の中にいることぐらいは分かっておくべきだった
って言われて、え?え?何かマズイ理解なり認識があるのか??
何がマズいのかワカラン??って感想
単純に罵倒してマウント取りたかっただけなら問題ない

634 デフォルトの名無しさん
2019/10/25(金) 09:19:09.32 ID:dpM8h0bh

624見たとき何言ってんだコイツと思ったが案の定ボコされてて安心した
論理的な思考ができない人間って怖いわ

635 デフォルトの名無しさん
2019/10/25(金) 11:27:36.73 ID:2bZjXkn1

624
>浮動小数においては
>(a+b)+c != a+(b+c)
>なんだよ。
まるめ誤差を考慮すればだけど
浮動小数点を引き合いにだして!=だってやった事か

636 デフォルトの名無しさん
2019/10/25(金) 18:07:06.47 ID:mPFGj3TJ

633
そこは売り言葉に買い言葉だったんじゃねーの。
俺は雑な主張はアリだと思うし、それに対する善意の解説もいいと思うぞ

637 デフォルトの名無しさん
2019/10/25(金) 18:15:13.95 ID:lPbrkHzC

633
三段論法的なのが糞だって言ってるだけでその部分は別に間違ってないよ
まあマウンティングするつもりはないんだが
曖昧なこと言っといてそれについて意見したら「バカに絡まれた」なんて
そりゃ感情的にもなるよ確かに大人げないけどさ

638 デフォルトの名無しさん
2019/10/25(金) 18:32:47.40 ID:lPbrkHzC

636
そう言ってくれるなら嬉しい限りだけど
最初のレスから反省する点が多すぎるのでもう消えます
スレのみなさんご迷惑をおかけしました&#128575;

639 デフォルトの名無しさん
2019/10/25(金) 19:57:54.15 ID:jaw68O5t

まあかなり意地の悪い例を出したつもりではあったけどね。
「論理的思考」とか言い出す輩が引っかかりそうな例を。

640 デフォルトの名無しさん
2019/10/25(金) 20:50:12.32 ID:8KDPUxpr

どうでもいいけど「論理的アルゴリズム」だったら簡単にコピーできそう
アルゴリズムとパラダイムの違いの一つは、コピーする自由

641 デフォルトの名無しさん
2019/10/26(土) 00:21:14.14 ID:ud4Mu1os

モナドの話してる中で一人結合則全般についての話始めて浮動小数点数に関する当たり前の説明せっせとしてんのは草
小学校で習う掛け算も足し算もモナドみたいに便利だけど浮動小数点数はモナドと違って不便だねえ

642 デフォルトの名無しさん
2019/10/26(土) 10:10:55.84 ID:e6NVGnmw

最近近隣スレで浮動小数点数で恥ずかしい書き込みを繰り返してる香具師を観かけたが
きっとCS知らない浮動小数点数覚えたての厨房が暴れてるんだろう

643 デフォルトの名無しさん
2019/10/26(土) 10:22:10.08 ID:az5oKcRh

素人なので確認したい
浮動小数点演算は計算式の組み替えによって生じる
計算ごとの丸め誤差とその蓄積が一意ではない
そこが問題。でいいですか?

644 デフォルトの名無しさん
2019/10/26(土) 12:52:46.96 ID:751XFDvk

例えば、3桁の有限桁数で、

123,000 + 987 は、どうなると思う?w

645 デフォルトの名無しさん
2019/10/26(土) 13:03:31.77 ID:az5oKcRh

644
浮動小数点は実装の有効桁数とか精度誤差の複合なんですね
やっと理解できたとかも

646 デフォルトの名無しさん
2019/10/27(日) 09:39:17.43 ID:E41dDRFH

644
>123,000 + 987 は、どうなると思う?

合成や結合則との関係は?

647 デフォルトの名無しさん
2019/10/27(日) 12:11:44.86 ID:5vE1lFai

ヒント
(123000 + 987) + 456
123000 + (987 + 456)

648 デフォルトの名無しさん
2019/10/27(日) 12:20:50.14 ID:+UrB7+Fx

>647
有効桁数3の条件下では
443
443
で結合則?を満たしている

649 デフォルトの名無しさん
2019/10/27(日) 14:13:05.51 ID:E41dDRFH

647
ヒントなどと気取らず最初からその例を出せばいいのに…

648
整数計算で有効桁数という考え方はあまりしないとおもうし
計算途中の有効桁数範囲外の取り扱いを決めておかないと
なんとでも言えるような。JISにあったかな?

650 デフォルトの名無しさん
2019/10/27(日) 20:56:25.06 ID:5vE1lFai

649
最初からも何も最初言ったの俺じゃないし誰でも気づくだろ

651 デフォルトの名無しさん
2019/10/28(月) 15:11:56.47 ID:CizzAz3Z

恥の上塗り

652 デフォルトの名無しさん
2019/10/31(木) 16:11:16.19 ID:Q9035W3u

最近のHaskellは末尾再帰形は当たり前として、余再帰形まで最適化するってマジ?

653 デフォルトの名無しさん
2019/10/31(木) 19:47:56.88 ID:+pnqrJiF

モナドの話すると怒る人が一定数いるのに
最適化の話は難解でもすんなり受け入れられるのなんでだろう

654 デフォルトの名無しさん
2019/10/31(木) 19:53:32.58 ID:PeiHf3lU

653
モナドとか関係なくあまりに馬鹿っぽいレスが怒られるだけ
例えば653もそう

655 デフォルトの名無しさん
2019/10/31(木) 20:01:53.96 ID:0babd/Ur

年寄りが自分の理解できないことをしゃべるなって
いっているだけでしょ。最適化はなんだかんだいっ
て実践もしくはなんとか理解できる範疇とかでは。

656 デフォルトの名無しさん
2019/10/31(木) 20:08:46.83 ID:+pnqrJiF

例えば「馬鹿っぽい」の定義はモナドの定義よりもずっと複雑なんだよ
そのわりに「馬鹿っぽい」は難解すぎるという認識はほとんどない

657 デフォルトの名無しさん
2019/10/31(木) 21:33:19.89 ID:0babd/Ur

Haskellや圏論のモナドってライプニッツ由来?ギリシャ哲学由来?

658 デフォルトの名無しさん
2019/10/31(木) 22:15:10.01 ID:ZttcTVl1

モナドの場合、「俺の理解は正しくて、お前の理解は間違ってる」てな話になりがちだから。

659 デフォルトの名無しさん
2019/11/02(土) 11:54:49.10 ID:8EQu8ULJ

622
お返事おくれて申し訳ありません。
時間作って是非挑戦みたいと思います。
ありがとうございました。

660 デフォルトの名無しさん
2019/11/02(土) 21:23:26.95 ID:3BGLXMdU

【ぼくようメモ】

Haskellはマルチディスパッチをネイティブサポートしているので、
デザインパターンの一つ、Visitorパターンを気づかない内に使っている。

661 デフォルトの名無しさん
2019/11/02(土) 22:57:22.40 ID:r3wI6psG

Haskellを勉強するとどんなメリットが有りますか?

① Haskellを使って仕事する開発プロジェクトなんてものは世の中に有るのですか?
② ①が無いなら開発プロジェクトが無くても仕事の効率化などで、役立てる方法は有るのですか?
③ ②も無いなら、勉強して得た知識を日々のJava等の開発プロジェクトで役立てる方法は有るのですか?

662 デフォルトの名無しさん
2019/11/02(土) 23:45:55.62 ID:lY37zOLC

3かな。
コード書く際に
入出力部分と、ディターミニスティックな部分を選り分けるような書き方するようになった。

663 デフォルトの名無しさん
2019/11/03(日) 00:23:07.97 ID:lUqXCL2k

661
世界に目を向ければ、Reddit でよく求人されてる

664 デフォルトの名無しさん
2019/11/03(日) 07:05:59.77 ID:SWWLrIVQ

662
>ディターミニスティック
??
基本遅延評価なので即時評価とのより分?

665 デフォルトの名無しさん
2019/11/03(日) 07:44:37.10 ID:lUqXCL2k

664
ディターミニスティック
決定論的な

IOが絡む非決定論的なコードと、引数と戻り値の関係が決まっている決定論的なコードとを、
しっかり分けて書けるようになったと言いたいのだろう。

要するに、副作用のあるコードと純粋なコードを分けるということだ。

666 デフォルトの名無しさん
2019/11/03(日) 10:14:27.60 ID:9HD8E/jN

女心と秋の空はデバッグするのが難しいってことだ

667 661
2019/11/03(日) 12:44:26.49 ID:phxg68Jk

皆さんありがとうございます。

どうやら、あまり勉強する意味がなさそうに感じました。
なぜみなさんはこの言語をおやりになっているのでしょうか?
趣味でしょうか?

668 デフォルトの名無しさん
2019/11/03(日) 12:48:35.08 ID:r9lfrX/A

まあ勉強する意味はないといえばないかな。
その当時盛り上がったってのが理由だったりするから趣味といえば趣味。
でもまあその言語がどういうところを気にして作られたかってのを
触って実感するってのはプログラム全般で役に立つと俺は思うけどね。

669 デフォルトの名無しさん
2019/11/03(日) 13:13:12.24 ID:phxg68Jk

Javaから初めて、Javaしか書いたことが無い人というのは再帰メソッドとして実装した方が良いものも、慣れていないし面倒くさいからという理由で再帰にしたがらない傾向が有ります。
Hakellを勉強した人間なら、そういうことが起こらないという利点が有るといいうことでしょうか?

670 デフォルトの名無しさん
2019/11/03(日) 14:27:23.33 ID:9HD8E/jN

将棋の居飛車党と振り飛車党みたいなもん

671 デフォルトの名無しさん
2019/11/03(日) 14:42:14.64 ID:A+q4He3F

ループより再帰がいつも正しいわけではないでしょ
Javaなんだし
おれが仕事でやってるプロジェクトでは再帰は基本NGだよ

672 デフォルトの名無しさん
2019/11/03(日) 15:00:10.66 ID:smmSGOst

ループと末尾再帰は等価(キリっω

673 デフォルトの名無しさん
2019/11/03(日) 15:01:32.59 ID:b8FiTQTP

haskell学んでも、stack safeな再帰を書けるようになるわけでもないから、
haskellを学ぶ利点だとは思わない

理由を探さなきゃ学ぶ気になれないものには手を出さなければいいんだよ
CSの世界に限っても死ぬまでに学びきれないだけのネタがあるんだし

674 デフォルトの名無しさん
2019/11/03(日) 16:32:47.09 ID:nhaRMy12

『達人プログラマー』でも「毎年1つ新しい言語を学べ」と言っている
まあ凡人にそこまでは厳しくとも
たまに新しいプログラミング・パラダイムに触れることは
プログラマーにとって有益であると思うよ
それは知識として即効性のあるものというよりは(そういうのもあるかもしれないが)
1年2年経って効いてくるタイプのものかなと

675 デフォルトの名無しさん
2019/11/03(日) 18:49:00.94 ID:AdH9k/oI

661
②かな
宣言的プログラミングの作法が身につく

普段Javaを使っているのなら、
最近のJavaは関数型プログラミングのシンタックスがかなり増えてきているので
Haskellで高階関数の使い方を理解しておくと、Javaプログラミングに直接的に役立つ

676 デフォルトの名無しさん
2019/11/03(日) 19:10:14.85 ID:UDaenYuS

宣言的プログラミングとは何ですか

677 デフォルトの名無しさん
2019/11/03(日) 20:02:00.41 ID:JubniDAi

横レスだけど、そんなに役に立たないものなのか...
入門本買おうか悩んでたのに

678 デフォルトの名無しさん
2019/11/03(日) 20:22:26.22 ID:SWWLrIVQ

665
副作用ですか
Cのポインター辺りは副作用上等でトリッキーな事をしつつ記述してあるわけで
副作用と脆弱性に苦しんだ結果、RUST

Haskellの恐ろしい所はプログラムが何らかの高度な数学的アルゴリズムな場合があって
別途資料がないと全く理解できない
あっても以下略

679 デフォルトの名無しさん
2019/11/03(日) 20:59:17.59 ID:phxg68Jk

670

プロの世界では振り飛車は居飛車より勝ちにくいと言われますが、久保九段や菅井七段のようにそれを使って実践で勝つプロもいます。
アマの世界では振り飛車か居飛車かが直接勝敗に結びつくような高度な戦いができないので好きな方を選べばいいです。

ところが、ビジネスプログラミングの世界ではどうでしょうか?
残念ながら、手続き型プログラミング言語の開発プロジェクトしか存在しません。
関数型は使おうにも使う場所が無いのです。

680 デフォルトの名無しさん
2019/11/03(日) 21:02:48.17 ID:A+q4He3F

ないことはない
たとえIT土方業界であっても

681 デフォルトの名無しさん
2019/11/03(日) 21:12:52.97 ID:j4VhEtAF

679
Javaだって宣言型にシフトしつつあるし、
最近のJavaScript(ECMAScript)は基本的に宣言型プログラミングだよ

宣言型プログラミング=関数型プログラミングではない

682 デフォルトの名無しさん
2019/11/03(日) 21:23:44.54 ID:r9lfrX/A

宣言型を変にもてはやす記事とかあるけどさ、
あれバグがあるときに凄まじくデバッグしにくいってことはちゃんと知っておいた方がいいぞ。

683 デフォルトの名無しさん
2019/11/03(日) 21:26:11.59 ID:j4VhEtAF

682
それはいくらなんでもド素人すぎるだろう

684 デフォルトの名無しさん
2019/11/03(日) 21:44:19.05 ID:r9lfrX/A

683
多分、君は論理プログラミングとか制約プログラミングについて理解してないんだろう。

685 デフォルトの名無しさん
2019/11/03(日) 21:49:28.47 ID:j4VhEtAF

684
むしろそちらの方が専門に近いのですが、
どういうことか教えていただけますか?

686
2019/11/03(日) 21:49:45.89 ID:A1whpPq+

674
>『達人プログラマー』でも「毎年1つ新しい言語を学べ」と言っている
新しい言語を一年に一つ、とは、これは厳しい縛りですね…

687
2019/11/03(日) 21:51:15.76 ID:A1whpPq+

679
>久保九段
地元の棋士なので光速谷川氏とともに密かに応援してたりします

688 デフォルトの名無しさん
2019/11/03(日) 21:59:29.92 ID:A+q4He3F

685
横からだけど
凡人にとっては数学的な静的な関係を見つけ出すのはしんどいことが多い
副作用あろうが、ソースコードをステップ実行でトレースできる手続き型の方が
問題解析が楽ってことは往々にしてある

689 デフォルトの名無しさん
2019/11/03(日) 22:04:59.57 ID:nJ4Xpsy6

686
ジャンプ漫画みたいな台詞すこ

「三つか四つはないと、暇を持て余してしまいます……」的な

690 デフォルトの名無しさん
2019/11/03(日) 22:44:06.12 ID:ksAXIGkW

モナドって結局、計算効果Tをもたらすプログラム(T-プログラム)は
クライスリ圏をなすからクライスリトリプル(モナド)がT-プログラムの
合成規則として必要だから出てくる

691 デフォルトの名無しさん
2019/11/03(日) 22:45:11.48 ID:A+q4He3F

駄目な理系君の典型

692 デフォルトの名無しさん
2019/11/03(日) 22:56:40.83 ID:l1Ex5n/D

691
否定しないが結論としてはそうだぞ
モナドを利用したテクニックと登場する理由は違って当然じゃね?

693 デフォルトの名無しさん
2019/11/03(日) 23:34:12.73 ID:/tZ0XI+t

681

>Javaだって宣言型にシフトしつつあるし

どのような店を持ってシフトしているとおっしゃっているのか、例を教えていただけると嬉しいです。

694 デフォルトの名無しさん
2019/11/04(月) 05:48:03 ID:PrFaR+H+

モナドの副作用云々は
Scala Monix の並列プログラミングも面白い

695 デフォルトの名無しさん
2019/11/04(月) 06:29:33.14 ID:u0qouhFJ

678
恐ろしさというよりも
Haskellの仕様その他聞くと全く関係ない数学の話をしだす奴ばかりでカンファレンス途中で抜けてきたことがある
数学には全く興味ないんだがね
言っても聞きやしないこいつらとは合わないわと思った

696 デフォルトの名無しさん
2019/11/04(月) 07:07:21.47 ID:PrFaR+H+

695
マジでHaskellは数学者が数学者の為にデザインしたみたいなものなので
ネット上のコードも数学的専門性に全振りしたものが普通にある
そんなのは数学の専門課程と無関係な人間には理解できない

だけど、英文の赤黒木を扱うHaskellのコードは恐ろしくスッキリ短くて
余分なノイズが少ない
全体の把握が楽だった、恐ろしく高密度かも
コメントで書く詳細説明≒Haskellのコード

697 デフォルトの名無しさん
2019/11/04(月) 12:15:05.55 ID:GOdOYVw0

型の宣言だけならコードの中に埋め込むことはできた
だが数学の知識をすべて宣言するのは無理
だからコードを読みながら数学勉強しようと思ったら、わかることは静的型ばっかりだぞ

そもそも数学は広大過ぎてどこから手をつけるか迷うから静的型から始めるのは合理的

698 デフォルトの名無しさん
2019/11/04(月) 20:52:45.92 ID:t2f72QmD

数学の後ろ盾があるとよくわからない安心・万能感を錯覚し
これがよくわからない人を呼び寄せてしまう
この魅力はオカルトめいている
謎多き異性に惹かれてしまうのと似ている

699 デフォルトの名無しさん
2019/11/04(月) 21:01:45.20 ID:0O6JYxLK

キモすぎてわろた

700
2019/11/04(月) 21:05:02.30 ID:fwURXfb5

696
>赤黒木を扱うHaskellのコードは恐ろしくスッキリ短くて
>余分なノイズが少ない

赤黒木がそんなに短くなるのですか?!
やっぱり haskell をがんがらなくては

701 デフォルトの名無しさん
2019/11/04(月) 21:24:51.70 ID:GOdOYVw0

オカルトめいているのは数学でも言語でもない
人間の感情がオカルトめいているのだ

702 デフォルトの名無しさん
2019/11/04(月) 21:59:28.69 ID:PrFaR+H+

700
英語の参考資料(ブラウザで翻訳しつつ
Red-Black Trees in a Functional Setting
ttps://pdfs.semanticscholar.org/7756/16cf29e9c4e6d06e5999116f777e431cafa3.pdf

703
2019/11/04(月) 22:04:39.09 ID:fwURXfb5

702
thx a lot !
英語は読めないのですが、想像していなかったくらいに簡潔ですね…

704 デフォルトの名無しさん
2019/11/05(火) 17:15:35.86 ID:GEIgbGGA

PostgREST は Haskell のキラーコンテンツになれるか

705 デフォルトの名無しさん
2019/11/05(火) 20:00:05.59 ID:PndodFqR

Haskellの代数的データ構造は、速度が低い方に引かれるけど、恐ろしく合理的な手法かも知れない
中身は基本Lispの構文糖衣相当だからLIST処理のコストがそのまま処理速度に反映される

ただ、数学者が数学者の為にデザインした分だけ優れた表現力をもっている

C++で
class TEST {int a, b, c}; が
Haskellでは
Test Int Int Int になって
関数の定義時に
add (Test x y z) =
z + y + z
関数定義で型指定と値を変数名に拘束して計算する

test = Test 1 2 3
add test
なんか凄い気がする

706 デフォルトの名無しさん
2019/11/05(火) 20:14:52.01 ID:2pF9vl9I

Simon Peyton Jonesもなんかよくわからんけど関数型言語カッケーと思ったからやった
って言ってるくらいだからそういうのでいいんかもなとは思う。

707 デフォルトの名無しさん
2019/11/05(火) 20:40:52.74 ID:9FWI0Jsd

705
C++17なら、そこそこそれっぽく書けないか?
struct Test { int a, b, c; };
auto add(Test t) {
auto [x, y, z] = t;
return x + y + z;
}
auto test = Test{ 1, 2, 3 };
add(test);

708 デフォルトの名無しさん
2019/11/05(火) 20:47:05.49 ID:9FWI0Jsd

おっと、型定義はこっちのほうがそれっぽいか
#include
using Test = std::tuple;

709 デフォルトの名無しさん
2019/11/05(火) 20:58:36.52 ID:CZEUqG6i

ええやん

710 デフォルトの名無しさん
2019/11/05(火) 21:21:54.18 ID:qlchjqLq

C言語のswitchとenumが貧弱だったせいでコールバック地獄が始まったわけだが
コールバックの一部を、代数的データ型の場合分けで代替できる

数学者のためのデザインとの指摘はあたらない

711 デフォルトの名無しさん
2019/11/06(水) 01:26:55.45 ID:rSRNMbA2

707
同意します
C++の出力コードが速い事も

ただ、アルゴリズムとデータ構造を表現する時Haskellのコードがスッキリしてる
Haskellで組んだOSの例も

712 デフォルトの名無しさん
2019/11/06(水) 11:05:04.05 ID:eV2NmORn

haskellで組んだos詳細きぼん

713 デフォルトの名無しさん
2019/11/06(水) 18:02:57.62 ID:rSRNMbA2

HaskellでOSを作るプロジェクトがある
Haskellそのものがガベージコレクションが必要なLispの構文糖衣的性格があるので
通常のOSはGCを利用するではなく、必要であればGC的メモリー管理もしますな立場

Haskellのそこら辺の拡張を無理やり行ってとりあえず動いてますと言う体裁だそうです
LispでOSを作ればシステムの軽さ速度に制限が起きることと同じです

一応これ
Haskell OS
ttp://programatica.cs.pdx.edu/House/
見解の元ネタに近いもの
Can a operating system be made completely in Haskell?
ttps://www.quora.com/Can-a-operating-system-be-made-completely-in-Haskell

714 デフォルトの名無しさん
2019/11/06(水) 18:52:46.75 ID:KNNfVqhy

そういえば随分以前にLISP専用プロセッサを開発したっていう
大学があったなぁ。

715 デフォルトの名無しさん
2019/11/06(水) 19:42:19.17 ID:o3tEvZiY

30年くらい前
京大だかなんだか

716 デフォルトの名無しさん
2019/11/06(水) 19:49:43.93 ID:hVaPqBLT

その成果は同じく遅延評価があるTCLに結実したんですか。

三十年たっていると若者の人生相談にのってあげたりしないといけないですね

717 デフォルトの名無しさん
2019/11/06(水) 22:09:20.32 ID:nryCaCA5

Haskellは世界を救うってセミナーで言ってたけど。

718 デフォルトの名無しさん
2019/11/06(水) 22:15:29.42 ID:8uVcy+F0

救われちゃったら、ハスケルハックしときゃいいのか

719 デフォルトの名無しさん
2019/11/06(水) 22:17:29.04 ID:nryCaCA5

みずほのシステム移行にHaskellが採用されていたなら半年で完了できていたって言ってたよ。

720 デフォルトの名無しさん
2019/11/06(水) 22:17:52.37 ID:nryCaCA5

コンパイルを通ればバグがないことを保障されるし。

721 デフォルトの名無しさん
2019/11/06(水) 22:36:34.34 ID:E2YfCG0n

719
その手の話よく聞くけど

なんで、こうも関数型は人気ないん?
F#も人気上は微妙だし

722 デフォルトの名無しさん
2019/11/06(水) 22:41:32.49 ID:nryCaCA5

セミナーでは数学の素養が足りないからだって言ってたけど、僕はもう手遅れなので、次世代に期待してます。

723 デフォルトの名無しさん
2019/11/06(水) 23:00:13.47 ID:E2YfCG0n

数学自体は結構勉強したけど 圏論のよさはよくわかんね
ある意味数学の分野で一番かもしれない、圏論のよさが分からんのは
次はホモロジー代数かな

代数幾何は一番時間食ったけど、理解できていないので除外するけど

724 デフォルトの名無しさん
2019/11/06(水) 23:27:03.30 ID:Ly3pzzPK

720
さすがにそれは言い過ぎ
単にコンパイラを通せただけだ

725 デフォルトの名無しさん
2019/11/07(木) 00:27:07.92 ID:/6vjWhrz

パタンマッチの要素不足やらリストの範囲外参照やら
STMの糞詰まりやらいろいろ実行時エラーの要素は
あるよね

726 デフォルトの名無しさん
2019/11/07(木) 00:49:38.56 ID:T7e/rKHL

まあ少なくとも、意図した型じゃないのに実行できる上、そのまま実行時に死ぬことすらしない言語よりはよっぽどマシ
(ちょうど今、某動的型付言語でハマってキレてた)

727 デフォルトの名無しさん
2019/11/07(木) 00:57:14.10 ID:/6vjWhrz



遅くまでお疲れ様w

728 デフォルトの名無しさん
2019/11/07(木) 04:03:06.11 ID:8Vzx7lLq

719
COBOLのソースをHaskellで組んだプログラムで解析して
全体の処理、依存関係資料を作成
それを参考にしつつ java他へ移行じゃなかったけ?
詳細はググってください

COBOLのコードはトリッキーな記述はしない素直系だから解析はかどるんちゃう?

729 デフォルトの名無しさん
2019/11/07(Thu) 06:10:19 ID:RqdAjhZM

">723
英語読めない人が、英語のよさがわからんというのと同じじゃね
あなたが読めるものに誰かが翻訳してくれるのを待つか、
あなたが読めるようになるか

代数幾何なんて圏論で再構築されているから圏論の言葉がわからないと
どうしようもないけど、ホモロジー代数まで有用さがわからないというのは
代数が向いてないのか、興味が隔たっているのか微妙なところ

730 デフォルトの名無しさん
2019/11/07(木) 06:36:09.91 ID:RqdAjhZM

721
関数型パラダイムの、ユーザ向けの簡単な部分のいいとこどりは各言語でされているし、
人気もあると思う
それを超えて関数型言語に入ろうとすると、面倒くささのほうが勝っちゃうのかも
F#は、実行速度が遅かったのも大きいと思う

731 デフォルトの名無しさん
2019/11/07(木) 06:48:07.50 ID:OeHLbL3M

F#が遅いって適当なこと言ってんな

732 デフォルトの名無しさん
2019/11/07(木) 07:46:21.60 ID:XLcDzJj2

RISCとCISCって本当に2方式独立してんのか

圏論って複素解析を婉曲的に表現してんじゃないのか?
アイレンバーグは4元数も研究してたしバーコフ息子は流体力学研究してた

733 デフォルトの名無しさん
2019/11/07(木) 07:52:29.18 ID:XLcDzJj2

CPUレベルで実は関数型言語に翻訳されてたら
数学的に解析しやすいし高速化も数学的にできるしバグも数学的にとれる
という妄想をするんだが
失敗の歴史をウソと考えると

734 デフォルトの名無しさん
2019/11/07(木) 09:47:06.79 ID:8Vzx7lLq

現行の半導体プロセッサはスイッチングで起きる0と1状態を基本にして組みあがっている関係で
他の技術(量子関係?)が発達しない限り関数的内部表現うんぬんはLISPが誕生した時点で完了してます
テキストベースの文字列を実行可能なコンピュータプログラムに変換する行為は
文字、テキストベースである限りLIPSの構文糖衣と見なせます

735 デフォルトの名無しさん
2019/11/07(木) 10:11:56.72 ID:n7hI0M2o

721
カプセル化の恩恵を受けられないからかと

Haskell含む関数型はは仕組み上データを分離/隔離できないのでロジックに比重を置きすぎてるきらいがある
一般的にはクラスに任せたい、内容を知らなくても扱える構造が欲しいわけで
関数ドリブンではやはり困る

個人的にはCに逆戻りしてる印象すらあるね

736 デフォルトの名無しさん
2019/11/07(木) 11:12:23.51 ID:6eFvSmvg

ブライアン・カーニハンもf#の中間言語は
解析しやすいCであるべきだってプロジェクト立ち上げれば
関数型といいつ中身は手続き型でデバッガの資産も使い回せるから
人気でるかもよ。

737 デフォルトの名無しさん
2019/11/07(木) 11:36:14.12 ID:uxj9LdkK

Cに逆戻りしている・・・型安全とガベコレがあるCを作ってしまったのか

738 デフォルトの名無しさん
2019/11/07(木) 11:51:10.43 ID:dB1QBGXo

737
https://mevius.5ch.net/test/read.cgi/tech/1471841975/

739 デフォルトの名無しさん
2019/11/07(木) 12:41:20.34 ID:y+UtRegG

モジュールがあるからカプセル化の恩恵は受けられるのでは

740 デフォルトの名無しさん
2019/11/07(木) 14:23:10.73 ID:B1e2KIDS

735
実装詳細の隠蔽にPatternSynonymsが使えるよ
https://haskell-explained.gitlab.io/blog/posts/2019/08/27/pattern-synonyms/index.html

741 デフォルトの名無しさん
2019/11/07(木) 14:56:51.38 ID:n7hI0M2o

それはオブジェクトじゃないから目的が違うかもね

742 デフォルトの名無しさん
2019/11/07(木) 15:20:12.79 ID:B1e2KIDS

741
でもまさに内容を知らなくても扱える構造だぜ?

743 デフォルトの名無しさん
2019/11/07(木) 16:02:50.99 ID:uxj9LdkK

カプセル化「継承とポリモーフィズムがやられたようだな・・・」

744 デフォルトの名無しさん
2019/11/07(木) 16:07:19.92 ID:y+UtRegG

カプセル化: 抽象データ型、pattern synonym等
継承: クラス継承
ポリモーフィズム: 存在量化によるサブタイピング多相

haskellってストラウストラップの言うOOP言語なのでは

745 デフォルトの名無しさん
2019/11/07(木) 18:28:48.58 ID:THHm8pjB

729
横からですけど、ホモロジー代数の有用性を教えてくれませんか?
何に使えるんです?

746 デフォルトの名無しさん
2019/11/07(木) 19:14:04.10 ID:y+UtRegG

ホモが寄ってくる

747 デフォルトの名無しさん
2019/11/07(木) 19:41:36.65 ID:a+LjUnl5

745
コホモロジー全般を抽象的に取り扱える。

748 デフォルトの名無しさん
2019/11/07(木) 21:38:48.71 ID:QQLc3fgk

745
俺もまだあやふやなんだけどどうも複素解析で積分するとコーシーの積分定理みたいに
純トポロジカルに積分値決まるじゃん
どうもモチベーションはそこらへんで
複素平面だと複素解析の教科書みたいに簡単にいけるけど
複素多様体上で線積分しようとするとややこしいからざっくりややこしいところを
ホモロジー代数って分科したみたい

749 デフォルトの名無しさん
2019/11/07(木) 21:48:30.40 ID:QQLc3fgk

ポアンカレから来ているし本当に突き詰めるとたぶん複素解析力学の問題解けるんだと思う

750 デフォルトの名無しさん
2019/11/07(木) 22:17:56.72 ID:THHm8pjB

747
代数幾何の教科書に層とコホモロジーが載ってるけどそのあたりと関係するのかな
748
難しそうだね

751 デフォルトの名無しさん
2019/11/08(金) 02:23:56 ID:xHGwPMhN

">732
> 圏論って複素解析を婉曲的に表現してんじゃないのか?

的外れにも程がある
層sheafは解析接続の考えを多変数複素関数へと拡張する発想で生まれたものだが
圏は複素解析から出てきたものではない

752 デフォルトの名無しさん
2019/11/08(金) 07:14:54.57 ID:vRM9u/Iy

720
エアプ乙
空リストにheadしちゃったらあっと言う間やん

753 デフォルトの名無しさん
2019/11/08(金) 07:33:23.28 ID:KkBgvLKM

745
ホモロジー代数の有用性...
代数系の多くの分野の主力ツールなので知らないと入門書を終えた後に代数系で先に進めない
くらいには使われています。直接使われていなくてもやってることはホモロジー代数由来の
ことがよくあります

古くは、ホモロジー代数の枠組み(コホモロジーなことが多い)で完全列が見つかると
機械な計算だけでいろいろな結果が出てくるというのが強みでしたけど、その後は
ホモロジー代数の枠組みにはまらないものを一般化したりして新しい枠組みを作って
ホモロジー代数のように扱えるようにしてきて多くの分野が生まれています。
derived categoryやtriangulated categoryもそうですし、環論のquasi-frobenius ring
(入門書にある森田の定理の延長)などもこの線

自分で圏や代数構造をつくるのでなければ圏も代数も知らなくていいと思いますけどね

754 デフォルトの名無しさん
2019/11/08(金) 10:55:25.73 ID:q9/Fdf+e

753
有用性について何一つ説明してないw

755 デフォルトの名無しさん
2019/11/08(金) 18:27:28.35 ID:vRM9u/Iy

Haskellって素晴らしい土台造りの研究に終始して、中々家を建てない印象

756 デフォルトの名無しさん
2019/11/08(金) 18:41:50.96 ID:O4xqpbU0

もう立ててあるんだろ。MSのpower shellも当初はモナドシェルという
名称だったけど無関係だとは思えない

757 デフォルトの名無しさん
2019/11/08(金) 19:37:52.83 ID:tNfNofGs

印象と言っているのでは?

758 デフォルトの名無しさん
2019/11/08(金) 20:48:21.44 ID:bTjIiHb/

haskellってほんのちょっとしたものにも名前つけなきゃいけなくて困る

759 デフォルトの名無しさん
2019/11/08(金) 21:26:54.71 ID:nzoS2I9V

素晴らしい世代別GCの研究はする
でも今作ってるアプリは参照カウントで十分
こういうとこだろ

760 745
2019/11/08(金) 22:49:41.82 ID:FXrQ9F3T

753
なるほど
層とホモロジー代数という本でも現代数学の多くの分野の記述に欠かせない重要な基本言語であると言ってますから
そういうことなんでしょうね
ありがとうございました

761 デフォルトの名無しさん
2019/11/09(土) 01:29:11.95 ID:kdUUP+4v

758
たとえば?

762 デフォルトの名無しさん
2019/11/09(土) 17:05:19.55 ID:5gH5tpDv

型シグネチャちゃんと書いとけば、後はポイントフリーにしてお茶を濁して、利用者が命名してねって感じに逃げることも可能

763 デフォルトの名無しさん
2019/11/09(土) 18:32:42.34 ID:y5YvoXPL

HKD(Higher Kinded Datatype)ってのはな

おまえら例えばコマンドラインツールのオプションとかを扱うとき
Options <$> ... <*> ... みたいにしてデータを返すアクションを構築してるだろうけどさ
そこの ... 同士に共通性があるわけじゃん。
コマンド引数>環境変数>設定ファイルの優先順位で読み出されたりするじゃん。
でも各フェーズごとの処理をまとめるのはこのままじゃ難しいわけよ

ところが方針を変えて、中身と外見がひっくり返ったような
data Options_ f = Options _ { verbosity :: f Int, ...}
を使うとエントリごとに Nothing にしたり出来るようになって、
Options_ を一般化したやつらが Generic 介しておんなじように舐められるから処理の共通化もできて、
値の合成もしやすく、コンパイラの warning でエントリの処理漏れを検知できて、いいよね。
このパワーアップしたデータみたいなもんを高カインド・データ(HKD)って呼ぶぞって話

764 デフォルトの名無しさん
2019/11/09(土) 18:41:35.48 ID:PlRJlzfP

コマンドオプションを無駄に複雑にしないように設計に時間使う方が有意義。
てかオプションごとき糞みたいな複雑な解析いれるくらいならすべて設定ファイルにしろよ。

765 デフォルトの名無しさん
2019/11/09(土) 19:36:35.25 ID:LdPLX9iY

なーる。多変数Maybeでコマンドレットか。
getoptにs付けるか付けんかとかいみなかったんや

766 デフォルトの名無しさん
2019/11/09(土) 19:49:25.81 ID:LdPLX9iY

首相って数学そんな明るいの?

767 デフォルトの名無しさん
2019/11/10(日) 09:53:34.75 ID:UPgh4+Yq

764
オプションを上書きできないと不便だし、
ツールごとにどんなに設計しようと不可避の複雑さは残るだろうさ。
HKD使えば複雑な解析にはならない。
https://chrispenner.ca/posts/hkd-options

ちな Options から Options_ を Generic で作るやつもある
https://github.com/i-am-tom/higgledy

768 デフォルトの名無しさん
2019/11/10(日) 20:10:37.56 ID:MbFf7EI6

いや普通に作ってればそんな複雑にはならんわ。。
無理やり用途を探してるってのはわかるけどさ。

769 デフォルトの名無しさん
2019/11/10(日) 21:36:01.67 ID:UPgh4+Yq

768
そうかな。改善前と同等の機能のコードをもっとシンプルに書ける?
個人的にはさらにリッチに、設定値が原因で問題が起きた時「設定ファイル~のここで定義された値が原因でコケたよ」
くらいのことも言ってくれると嬉しい。HKD に Writer を突っ込んだりすれば出来る。

770 デフォルトの名無しさん
2019/11/14(木) 21:29:15.91 ID:U/F2ohqe

https://www.stepup-school.net/news/detail/728
微分方程式と圏論と量子コンピュータやるっていうけど
こういうところで圏論という言葉が出てくるの不思議な感じがする

771 デフォルトの名無しさん
2019/11/15(金) 01:56:55.98 ID:m2M4hoVH

770
> こういうところで圏論という言葉が出てくるの不思議な感じがする

圏論は現代の数学を記述するための言語だから、ある程度以上のレベルの数学を教えようとすれば圏論という言葉を学ぶのは避けられない
ちょうど、現代では英語という言葉を学んでおかなければ数学や自然科学で重要な研究論文を読んで学ぶことができないようにね

772 デフォルトの名無しさん
2019/11/15(金) 06:45:41.36 ID:CTCYdIoU

770
ステマ

773 デフォルトの名無しさん
2019/11/15(金) 11:19:15.11 ID:mFhZFK7X

だから自由ソフトウェアとか割れとかを宣伝して商品は宣伝しないスタイルがある

774 デフォルトの名無しさん
2019/11/15(金) 19:57:11.81 ID:uG++m6MK

PostgREST は Haskell のキラーコンテンツになれるか

775 デフォルトの名無しさん
2019/11/16(土) 00:01:26.66 ID:TatvE4r/

結局代数幾何やらずに圏論語っても胡散臭いものにしかならん。
別に代数幾何がすべてとはおもわんが起源ではある。

776 デフォルトの名無しさん
2019/11/16(土) 01:13:46.97 ID:yrgQ+1iB

集合論と集合の圏が胡散臭い
だったら射はあっても冪はない圏などを考えれば胡散臭さは軽減される気がする

777 デフォルトの名無しさん
2019/11/16(土) 09:25:34.99 ID:0kRbSQZl

>射はあっても冪はない圏
集合論を取っ払うなんてことは圏論は望んでねーわ。
馬鹿すぎて話にならん。

778 デフォルトの名無しさん
2019/11/16(土) 11:41:35.91 ID:Zb6iL5XI

馬鹿を取っ払いたい願望があるとはっきり言い切る方が簡潔で良い

779 デフォルトの名無しさん
2019/11/17(日) 11:04:47.89 ID:zhdkDGU4

私代数幾何ではありませんが数学科で代数系で圏論バリバリ使ってました。
しかし計算論への圏論の応用という意味ではほとんど役に立ってません。
圏論はその表現力の高さゆえにほとんどの数学に登場します。
しかし逆に言えばその登場の仕方で全く別の顔で出てくるのである一つのジャンルで出てくる圏論を極めても他ではほとんど役に立たなくなる事は多々あると思います。
まだ計算論で出てくる圏論の勉強は始めようとしてるとこなので代数幾何に出てくる圏論がどの程度役に立つかは断言はできませんが、あまり期待はできないと思います。

780 デフォルトの名無しさん
2019/11/17(日) 11:15:51.64 ID:X9AhIAwA

CSに出て来る圏論はフェイク

781 デフォルトの名無しさん
2019/11/17(日) 12:27:10.16 ID:zvcjV9Be

型はフェイクではない
○○を応用した成果が型である
ゆえに○○はフェイクではない

このように「応用」や「成果」の概念がフェイクに加担している

782 デフォルトの名無しさん
2019/11/17(日) 20:43:59.01 ID:56xYlt3M

780
> CSに出て来る圏論はフェイク

CSとCSでないとの境界は曖昧なわけだが
例えば構成主義的な型理論などはその典型だ
少なくともBart JacobsのCategorical Logic and Type Theoryでの型理論はCSでなく数理論理学で
そこで出て来る圏論はフェイクでなく本物だと思うがねえ
Lambek &amp; Scott (Phil)とそこで出て来る圏論に関しても同様

だからこそ数学を基礎付ける枠組みとしてのHTT (Homotopical Type Theory)などという考えが出てくるわけで

逆に言えば代数幾何で出て来る圏論は間違いなく本物なのは事実だが数理論理学で出て来る圏論から見ると酷く偏った部分だけだし
逆から見れば数理論理で出て来る圏論は代数幾何の圏論から見れば同様に非常に偏って見える

最近の高階圏や高次元圏の隆盛を見てもわかるとおり圏論の可能性は極めて広く豊かだから
「××で出て来る圏論はフェイク」といった主張はナンセンスだよ

ただ、本来、数学を知らずに使えねばならない単なるプログラミング言語に過ぎないのに
「圏論がどうした、モナドがどうした」、といって圏論を勉強しておかないとプログラムを書けないかの如く喧伝するのは
フェイクというか一種の羊頭狗肉あるいは虎の威(圏論、あるいは純粋数学という一種の高級ブランド)を借りる狐(プログラミング言語という実用道具)であり
間違った姿勢だとは思うけれどね

783 デフォルトの名無しさん
2019/11/17(日) 20:55:22.99 ID:N5iPOVW/

そうそう
多言語との差別化、マウント
選民主義の道具
あるいは原理主義で貫いてますよという言い訳みたいなもの
圏論必須みたいに言うのはバカ

784 デフォルトの名無しさん
2019/11/17(日) 21:23:18.02 ID:S3IAhXB4

とはいえほとんどのプログラマが欲しいのはどうせ虎の威だろ。
だからこの業界は何の発展もない。

785 デフォルトの名無しさん
2019/11/17(日) 21:25:48.05 ID:4jNKOHdS

何言ってのこの人

786 デフォルトの名無しさん
2019/11/17(日) 21:55:46.27 ID:N5iPOVW/

784
そう
僕らは「正しく」後追い根性から抜け出さなければならないと思うよ
そこから抜け出せないから日本はIT後進国

787 デフォルトの名無しさん
2019/11/17(日) 22:02:43.05 ID:nzTNCHtX

PostgREST は Haskell のキラーコンテンツになれるか

788 デフォルトの名無しさん
2019/11/17(日) 22:12:35.26 ID:zvcjV9Be

動的型付け原理主義なら権威もないしダメージもないんだが
ノーダメージな選択肢を冷笑して程々のダメージ受けてるやつもそれはそれで難儀な性格だ

789 デフォルトの名無しさん
2019/11/17(日) 23:21:11.81 ID:S3IAhXB4

まあ権威が言ってんだからで済ましたり静的チェックしてるから大丈夫とか
言い聞かせる方が地道にベンチマーク取るよりよっぽど楽だからな。
結局はそういうことだろ。
言い訳をしたいんだよ。

790 デフォルトの名無しさん
2019/11/18(月) 07:09:05.16 ID:6/WJcbq2

787
REST API作るのは他言語でも簡単だし、いまさらRESTっていう気もするし、
これだけで使ってもらうのは無理筋

791 デフォルトの名無しさん
2019/11/18(月) 11:01:11.35 ID:ahZzeXy3

rubyをいくらdisっても構わないと思うが
disるだけじゃ何も産まれないからな

792 デフォルトの名無しさん
2019/11/18(月) 19:55:00.90 ID:6QIkNIz7

どこが嫌いかより、どこが好きかで言語を語れよ!

793 デフォルトの名無しさん
2019/11/19(火) 11:11:47.89 ID:8naC8O/U

反日パヨク野党にはほめるところもすきなところも何もないわ

794 デフォルトの名無しさん
2019/11/19(火) 13:04:27.10 ID:TS8kcjoi

誰だよそいつは
自分を匿名化するのは別にいいけど敵を匿名にするなよ

795 デフォルトの名無しさん
2019/11/19(火) 14:46:28.06 ID:qFuVzVhm

793
>野党
は言語なのか?

はじめにことばがあった。ことばは髪とともにあった。
ことばは髪であった。

というくらいだから気になるかしらんが。

796 デフォルトの名無しさん
2019/11/19(火) 20:45:50.91 ID:EAp6ZFS6

何が問題のある機能か語る方がプログラム技術は向上する。
好きなものだけやってるバカは働いてほしくない。

797 デフォルトの名無しさん
2019/11/20(水) 11:22:47.40 ID:9VJHrV5/

技術自体が目的になることを問題視する風潮なので

サイコパスですら手段の目的化には強い罪悪感を持つようだ
もはやサイコパスでもなんでもないただの人

798 デフォルトの名無しさん
2019/11/20(水) 11:23:39.17 ID:ADcW+Cyo

つまらない

799 デフォルトの名無しさん
2019/11/20(水) 13:02:17.44 ID:i01367Jm

東京でのhaskellプログラマの求人だとさ
https://www.reddit.com/r/haskell/comments/dyh4rz/job_purescript_and_haskell_tokyo_or_remote/

800 デフォルトの名無しさん
2019/11/21(木) 20:19:49.90 ID:BfqobOk+

apiサーバー実装としてhaskell結構いけるという話が出てるな。
ちと興味出てきた。
モナドガーとかずっと言ってるバカしかいないのかと思ってたがそうでもないようだ。

801 デフォルトの名無しさん
2019/11/27(水) 15:44:41 ID:iuzce+69

よわそう

802 デフォルトの名無しさん
2019/11/28(Thu) 00:39:29 ID:W12oiqHO

圏論流行っているのって、人工知能の機械学習の理論のベースが複素多様体(複素ファジー)
にあってアルゴリズムに落とし込むにあたってバッチリ実学になるからとかそういう理由から?

803 デフォルトの名無しさん
2019/11/28(Thu) 00:44:08 ID:W12oiqHO

haskellの真価は機械学習で出るとかそういうやつかな。勝手に納得くっそー。

804 デフォルトの名無しさん
2019/11/28(木) 00:58:23.73 ID:O/IccFcB

FRPの金脈は掘り尽くされてみな失望して出て行ったの?
Haskellでゲーム作りを通してFRPを学べるみたいな本がLeanpubで書かれてたけど
作者途中で断念しちゃったんだよね

805 デフォルトの名無しさん
2019/11/28(木) 00:59:05.39 ID:W12oiqHO

ちくしょう。

806 デフォルトの名無しさん
2019/11/28(木) 01:00:13.06 ID:W12oiqHO

慈善事業で地位向上やってたんだろうが。ちくしょう。

807 デフォルトの名無しさん
2019/11/28(木) 01:06:40.27 ID:W12oiqHO

くっそ。こんな頭に線繋いで文意の通らないコミュニケーションとれるとか。
公認基地外化してなんてやろうだ。
邪魔するつもりはないが、全国クイズ大会とかいつまでやるつもりだ。

808 デフォルトの名無しさん
2019/11/28(木) 19:49:21.00 ID:mtRfePwe

802
圏論の流行の理由はそっち方面とは全く関係ない
一つは関数型プログラミング言語の型の体系の理論的基盤である型理論が圏論と直接的な繋がりがあるところから
もう一つは実用プログラムとしては避けて通れない例外処理や状態の概念をHaskellのような関数型プログラミングで扱うための理論的基盤としてのモナドから

809 デフォルトの名無しさん
2019/11/28(木) 22:20:47.13 ID:8LP6mRiM

関数型言語設計者にとっては重要だとしても、
Haskellを使っている人にはどうでもいい理論ってことか。

 >>圏論

810 デフォルトの名無しさん
2019/11/28(木) 22:28:37.21 ID:KJlOY0hh

アリアドネーの糸か蜘蛛の糸か。
でもどのみち結論はゼロサムだろう。

811 デフォルトの名無しさん
2019/11/29(金) 10:03:34.54 ID:KypBmx9c

arrayパッケージのData.Array.! は配列に O(1) の計算量で参照できるのでしょうか?

812 デフォルトの名無しさん
2019/11/29(金) 13:42:47.90 ID:KypBmx9c

811
よく考えたら、IOモナドではないので、O(1)で参照できる配列構造を作れるわけないですね。
質問は無かったことにしてください。
くだらないことでスレを汚してしまい、すいませんでした。

813 デフォルトの名無しさん
2019/11/29(金) 13:57:38.91 ID:BnvrknGG

せやろか

814 デフォルトの名無しさん
2019/11/29(金) 23:26:58.09 ID:rLKSZgh6

命題
IOモナドではない ⇒ O(1)で参照できる配列構造を作れない

を証命せよ

815 デフォルトの名無しさん
2019/11/29(金) 23:37:51.77 ID:UeTdOBou

漢字間違ってんぞ

816 デフォルトの名無しさん


2019/12/01(日) 02:50:14 ID:M279qGKp

我々は副作用は使ってないっ!キリッ
完全にクリーンなプログラムを書いているのだ!キリッキリッ

817 デフォルトの名無しさん
2019/12/01(日) 12:50:50.29 ID:ZEhocPVE

色々なコホモロジーの同型の証明については圏論は力を発揮するが、
型理論においてはそういう風にも考えられるよね?以上の意味はない。
単なる箔付けだな。

818 デフォルトの名無しさん
2019/12/01(日) 15:15:43.80 ID:3hecj3NX

doは単なる構文糖だな
それで、Pythonのlambdaの仕様を変える必要がないことが証明されてしまった
これだけでも十分大きい

819 デフォルトの名無しさん
2019/12/01(日) 15:24:48.19 ID:3P4UY/g+

その話kwsk

820 デフォルトの名無しさん
2019/12/01(日) 17:20:16.47 ID:m0gK1jxj

817
一つの型理論に対するモデルは原理的に様々なモデルがあり得る
その様々なモデルをまとめて特徴づけるのには圏論が便利なんだよ

いわゆる圏論的モデルだよ
圏論的モデルというのは本来の(数理論理学での)意味での具体的なモデルでなくて
与えられた理論に対するモデル全般が満たすべき性質の圏論による公理化とでも言ったほうが良い感じの代物だからね

それと型理論に応じて圏論モデルとしての圏には特有の興味深い構造(例えばデカルト閉圏とかモノイダル閉圏とかね)を持つケースが多い

821 デフォルトの名無しさん
2019/12/01(日) 18:31:03.50 ID:XkMP/E25

>圏論的モデルというのは本来の(数理論理学での)意味での具体的なモデルでなくて
>与えられた理論に対するモデル全般が満たすべき性質の圏論による公理化とでも言ったほうが良い感じの代物だからね
なるほど、数学基礎論の方面をあんま知らんからそういう発想になるわけか。

822 デフォルトの名無しさん
2019/12/01(日) 20:45:57.22 ID:3P4UY/g+

は?ちゃんと言え

823 デフォルトの名無しさん
2019/12/01(日) 21:43:32.61 ID:DFWCjLrg

いわゆる同型を除いて一意的(up to isomorphism)なモデルなことではないか。
どういうものかはわからんが。

824 デフォルトの名無しさん
2019/12/02(月) 19:35:22.17 ID:+Z2AJKW1

もうよElixirやろうぜElixir
Haskellに近いコーディングパターンマッチングも出来るし
もう、色々ユルユル
非同期マルチスレッドプログラムで受け手がないのにメッセージ送り捲れる(メール形式なので)
割り当てメモリーを使い切るとエラーで止まるけど(メールボックス満杯)
もう、ユルで目からウロコ

825 デフォルトの名無しさん
2019/12/02(月) 19:39:36.79 ID:6AEGHd3a

メールボックスがオーバーフローしない証明しながらコーディングするんすか?

826 デフォルトの名無しさん
2019/12/02(月) 20:11:00.44 ID:+Z2AJKW1

メールボックスだから受け手のプログラムも起動して非同期でメッセージを受け取って
メールボックスから消せばOk.
通常はメッセージの送り手スレッドがメールボックスの空き待ちになるだろ

メールボックス管理は独立したスレッドで動くんじゃね?
とにかくユルイ
僕でも出来たヽ(^o^)丿な感じ

827 デフォルトの名無しさん
2019/12/02(月) 20:42:42.47 ID:Y5cjsI9c

822
完全性定理でググレカス。

828 デフォルトの名無しさん
2019/12/06(金) 04:46:46 ID:Nw0PFMDP

話題は?

829 デフォルトの名無しさん
2019/12/07(土) 00:50:28.71 ID:mKAqVLXw

Nothing

830 デフォルトの名無しさん
2019/12/07(土) 02:10:24 ID:nHnMq71L

ライブラリーのソースコードをレビューしてるWebサイトってありますか?
この書き方は秀逸だとか、これは泥臭いとか
バージョンアップでのコードの進化を追ったり

英語でも全く構わないのですが

831 デフォルトの名無しさん
2019/12/07(土) 04:27:22 ID:AZmQeN3A

Windows 10 64bit 上で FFI (ccall) 使って Haskell の関数を呼び出してて
呼ぶ前に hs_init() が必要なのは,なんとなくわかるんだけど
hs_exit() の方は,そのあとアプリケーション全体がすぐ終了する場合は
呼ばなくてもいい?

Windows が呼び出し元のプロセスも Haskell ランタイムも開放してくれるよね
hs_exit() 呼ばなくても。たぶん
この辺,わかる人いますか

832 デフォルトの名無しさん
2019/12/07(土) 12:36:43.68 ID:ZsYnLuoj

プロセス切り離せば?
そうでもしないと他言語呼び出しなんて低レイヤーデバッグする覚悟ないとやってられんぞ。

833 デフォルトの名無しさん
2019/12/07(土) 20:22:19.70 ID:JHE2lozm

やってられない理由は低級言語でもHaskellでもなくGHC
Haskell実装はGHC以外にもいくらでもありえるから

834 デフォルトの名無しさん
2019/12/07(土) 21:02:46.11 ID:KFm7FNER

Haskellでスマホアプリ作りたいの!

835 831
2019/12/08(日) 05:30:16.98 ID:9cPQrEyK

832, 833
なんか GHC の FFI は
入っちゃいけない領域みたいに思えてきたんだがw

まぁたしかに,DLL で組み込むよりは別で組んだほうが
デバッグは圧倒的に楽だよね
(Rust でも DLL 書いてるけど,めちゃくちゃ苦労してる

836 デフォルトの名無しさん
2019/12/10(火) 15:02:27 ID:6qyfceqR

計算のキャッシュをしたい。
ある重い計算 heavy :: IO Char があってそれを f,g :: IO () から呼び出す。
一度 heavy が呼び出されて Char が返ってきた後はそれを使いまわしたい。
f で呼び出したなら、その結果の Char を g でも使う。
ただし heavy の実行は f,g のどちらかが呼ばれるまではしたくない。

cachedHeavy = unsafePerformIO heavy
とすれば cachedHeavy が利用されたときに一度だけ簡約がおこなわれて、
その時だけ heavy が実行されるので、これを使えば事は足りる。
でもなるべく unsafe は使いたくない。どうすればいいでしょうか。

837 デフォルトの名無しさん
2019/12/10(火) 15:23:28.41 ID:hI+yeapE

何もしなくても最適化で一回しか使われなくなるんじゃないの
haskellはそんなに馬鹿なの?

838 デフォルトの名無しさん
2019/12/10(火) 15:23:58.32 ID:48kVELqA

memcached

839 デフォルトの名無しさん
2019/12/10(火) 17:01:00 ID:6qyfceqR

">837
ターミナルからの入力 readLine みたいにキャッシュしたくないときもあって、
上記のような値を普通に呼び出すコードからは、コンパイラは意図を判別できない。

">838
なんぞそれ

840 デフォルトの名無しさん
2019/12/11(水) 22:52:31.45 ID:r4LYbsNN

-- cached :: IO a -> IO (IO a)
main = cached heavy ">= \ cachedHeavy -> 云々
こういうのでいいならunsafePerformIOは不要

841 デフォルトの名無しさん
2019/12/12(木) 11:38:57.75 ID:y6+ig4ik

840
はい。 f,g はトップレベルではなくIOアクションの中で定義しても大丈夫です。

IORefを使わなきゃ無理かな、と思ってたんだけど、これは目から鱗でした。
cached = pure
でいいんだよね?単にモナド一枚かぶせるだけで計算のキャッシュになるなんて、
今年一番のオドロキですわ

842 デフォルトの名無しさん
2019/12/12(木) 13:37:02.84 ID:9RMznkJC

841
cached = pure ではない
IORefを使うのは正しい

843 デフォルトの名無しさん
2019/12/12(木) 15:32:55.96 ID:y6+ig4ik

842
うーん指摘の通りだった。
841 のやり方ではIOアクション cachedHeavy を簡約で実行した時点で heavy が計算される。
f や g の中でそれぞれ実行したなら都度重い計算が走ってしまう。
i <- cachedHeavy をその前に実行するなら一度で済むが、遅延の要件「f,g のどちらかが呼ばれるまではしたくない」
を満たさない。

844 デフォルトの名無しさん
2019/12/12(木) 15:46:44.83 ID:y6+ig4ik

つまり… こんな感じでいいのかしら

cached :: IO a -> IO (IO a)
cached f = do
 r <- newIORef Nothing
 pure $ do
  c <- readIORef r
  case c of
   Nothing -> do
    ts <- f
    modifyIORef r . const . Just $ ts
    pure ts
    Just ts -> pure ts

> x <- cached $ print "heavy" "> pure 42
> x
"heavy"
42
> x
42

845 デフォルトの名無しさん
2019/12/13(金) 00:08:15.85 ID:0IkxZSMD

IORefをご存知でない?

846 デフォルトの名無しさん
2019/12/13(金) 11:45:01.85 ID:Zghtw6X7

845
間違っているところがあったら、具体的に教えていただきたい。

847 デフォルトの名無しさん
2019/12/14(土) 10:44:10.58 ID:EaJih9JU

cabalファイルの中でexectableで同じcabalファイルの
ライブラリー名をbuild-dependsにかいてあるのに
そのライブラリーのbuild-depensを全部書かないとコンパイルできない
のはなんで?テンプレート使ってるからとかある?

848 デフォルトの名無しさん
2019/12/14(土) 14:55:50.10 ID:EaJih9JU

ソースディレクトリをexeとlibに別々にしたら直った
なんだこのバグは酷いバグだ

849 デフォルトの名無しさん
2019/12/16(月) 18:39:37.82 ID:fwNQkg00

岡部健 (Ken Okabe)今度はQuoraでもアカウントBANされる
https://link.medium.com/EX3Y4COIs2

850 デフォルトの名無しさん
2019/12/16(月) 19:25:09.38

終わったコンテンツでしょ、彼はもう

851 デフォルトの名無しさん
2019/12/17(火) 00:03:50.44 ID:3VYtFLTP

オワコン。人間もっとやることある

852 デフォルトの名無しさん
2019/12/17(火) 08:07:51.17 ID:hHVSxQ9g

キャッシュ? https://wandbox.org/permlink/98ZKnQW0uSr5c5CV

f () = print "hoge" "> getLine ">= \x -> print "foo" "> return (\() -> x)
main = do
putStrLn "1234"
f () ">= \g -> do
let e = g ()
print e
print e

853 836
2019/12/17(火) 15:16:27.15 ID:zdxsmCDQ

852
たしかに f で行なった計算の結果を g で使えてるけど、俺の求めてたのは
さらに g の結果も f で使えることなんです。どっちを先に実行しても計算は一度だけ、を求めてた。

854 デフォルトの名無しさん
2019/12/17(火) 22:59:40.32 ID:nTHXuzTI

そもそもライブラリを全てimportする奴はいないので
使わなかったライブラリのコードは最後まで実行されない
全てのライブラリについて使うか使わないか予測できないならば実行の順序は予測できない

855 デフォルトの名無しさん
2019/12/18(水) 00:29:20.63 ID:RN3F5ybK

854
ここにいるぜ。まあ可能な限り、ということだけども…
多すぎでリンクできなくてGHCが落ちるのが面白かった。

856 デフォルトの名無しさん
2019/12/18(水) 09:15:25.20 ID:fJHQ6oEy

え、岡部健ってQuoraで暴れてたの?
アカウント停止はまた癇癪起こして名誉毀損してたとかが理由??

857 デフォルトの名無しさん
2019/12/18(水) 11:17:26.49 ID:RrfoIO3F

856
彼がなにかしらのコミュニティーでうまくやっていけないのは、これまでの活動からわかりきっている。
むしろ、Quoraではよく持った方だと思うよ。お薬をきちんと服用するようになってるんだろうね。

858 デフォルトの名無しさん
2019/12/18(水) 14:06:51.57 ID:eMsBbOWH

あいつか

859 デフォルトの名無しさん
2019/12/19(木) 00:31:57.76 ID:MqZ434Qi

haskell自体はいいんだけどstackとかhieとかいちいちでかくてめんどくさい
本当にhaskell書いてる人はいるの?

860 デフォルトの名無しさん
2019/12/19(木) 07:07:47.77 ID:lwXrm8Zb

依存関係を管理するのは理想
依存関係を消すのが現実
C++やSTLに依存することすら嫌ってCだけで書くみたいな現実

861 デフォルトの名無しさん
2019/12/19(木) 07:48:35.49 ID:gwJfRXBJ

hieはもうちょっとなんとかならんのかとは思う

862 デフォルトの名無しさん
2019/12/19(木) 10:21:19.22 ID:+cpLTGtZ

860
Rubyをdisるのは止めれ

863 デフォルトの名無しさん
2019/12/19(木) 14:13:07.54 ID:rbd8D3sc

実際にHaskellでコード書いてみると分かるけど
コンパイル通れば計算結果は確かに正しいんだけど
巨大なメモリを謎に使うようなバグが混入する事が結構あって
その種類のバグってエラー吐かないから特定がめっちゃ難しい。
巨大なプロジェクトでHaskell使うのは現実的には無理だと思う。

864 デフォルトの名無しさん
2019/12/19(木) 14:32:39.93 ID:0ocPbHfL

それ
haskell で書かれたプログラムのパフォーマンスチューニングむずすぎる

865 デフォルトの名無しさん
2019/12/19(木) 14:54:58.39

あればあるだけ使おうとするんでない?
足りなくなってからようやく(これからやる処理に必要最低限の)ガベコレ
この繰り返しだから永遠に自転車操業

866 デフォルトの名無しさん
2019/12/19(木) 19:09:11.03 ID:rbd8D3sc

この種のバグの混入原因って大抵の場合
ネットに散らばっている'Haskellらしい'記法にあったりするから
初心者の頃に読んだ書き方が
「(実はこの人全然Haskellでコード書いてないじゃんっ!!)」
と気が付くまでワンセット

ネット上だと処理が大きくなると破綻するようなサンプルコードばっかりでウンザリする
特に遅延評価を活用するような記法は
大抵メモリ関連のバグの原因になるから実際には避けなきゃダメなのばかり

867 デフォルトの名無しさん
2019/12/19(木) 20:23:04.10 ID:l1p3Y60G

デフォルトの挙動性格評価にするやつあったよね
あれ使ってる?

868 デフォルトの名無しさん
2019/12/19(木) 20:49:23.97 ID:lwXrm8Zb

ガベコレ言語を全否定してみるのも一つの方法
たとえばスマホが壊れたら全部新品にするかそれとも壊れた部品を特定してそこだけ修理するか

869 デフォルトの名無しさん
2019/12/19(木) 20:50:47.99 ID:mvsIV7PX

結局最適化しようとするとコンパイラのくせをしっかり理解してたり
凄まじい技術力がいるという。。

870 デフォルトの名無しさん
2019/12/19(木) 23:44:31.80

つまり Rust の時代か

871 デフォルトの名無しさん
2019/12/20(金) 10:00:27.91 ID:lm7vpsLR

Rustってhaskellerにも結構評判いいけどどうなの

872 デフォルトの名無しさん
2019/12/20(金) 11:16:14.21 ID:MYxSal4F

871
俺は「あぁ,Haskell でいうアレね」みたいな感じで学べた
厳密な感じが好きなら,気にいるんじゃないのかな
ドキュメントも揃っていて学びやすいと思う

ただ,俺はいまいち使い所を見いだせてない
Haskell で書ける分野なら Haskell で書いちゃうし
ちょっとしたツールとかサーバーサイドとかは Go のが楽だし

WebAssembly を生成するために使うのが
今一番,Rust の活きる分野な気がする
Rust は,クロスコンパイルが楽なので

(個人の感想です

873 デフォルトの名無しさん
2019/12/20(金) 11:25:55.75 ID:mQBHONqp

871
ただのLisp方言やML方言はもう飽きたってことだろ

874 デフォルトの名無しさん
2019/12/20(金) 12:03:56 ID:tZwYgFV3

「C言語は純粋関数型」と言ってたのってQuoraの岡部健?

875 デフォルトの名無しさん
2019/12/20(金) 21:36:07.96 ID:/W4lQx2e

フロントをrustで書くとか一番馬鹿な選択だろ。話にならん。

876 デフォルトの名無しさん
2019/12/23(月) 17:59:43.65 ID:/flai8cL

もしかしてParsecってあんまり使われてない?
Parsecのドキュメントが2001年とか古いのしか無くて、最初のサンプルコードすら通らない
ライブラリの使い方が解らなくていきなり躓いてる

877 デフォルトの名無しさん
2019/12/23(月) 18:29:48.72 ID:B7hjQJ1Z

ここの住民、圏論とかの話だと玄人っぽいのにプログラミングの話になると初心者っぽくて謎

878 デフォルトの名無しさん
2019/12/23(月) 20:24:57.43 ID:E1rjr0pL

876
ドキュメントと言うのが何を指しているのか具体的なURLを示してくれないと、
何が原因でどう躓いているのか、助けようにも調べる取っ掛かりが無くて困る。

あと、本当にその古いドキュメントとやらしか学習資料は無いのか?
他にチュートリアルやブログなどは参考にならないのか?

879 デフォルトの名無しさん
2019/12/23(月) 20:56:14.64 ID:A/dzNHpI

どうせ躓くなら一番最初に躓く初心者っぽい奴の方が運が良い
ビギナーズラック

巨大なメモリを使う巨大なプロジェクトの完成直前に躓くのはかなり運が悪い

880 デフォルトの名無しさん
2019/12/23(月) 21:51:15.50 ID:pH3djwe1

876
Parsec の開発は今や"メンテナンスモード"に入っていて、代わりに attoparsec や megaparsec が活発。
https://haskell.e-bigmoon.com/posts/2019/07-14-megaparsec-tutorial.html

881 デフォルトの名無しさん
2019/12/23(月) 21:58:54.38 ID:/flai8cL

ここ[parsec: Monadic parser combinators](http://hackage.haskell.org/package/parsec)に載ってる
これ[Parsec, a fast combinator parser](https://web.archive.org/web/20140528151730/http://legacy.cs.uu.nl/daan/download/parsec/parsec.pdf)です
他のは、ついでにParsecに触れているという感じで、詳しそうなのはこれしか見付けられませんでした

<続く>

882 デフォルトの名無しさん
2019/12/23(月) 21:59:30.49 ID:/flai8cL

最初のサンプルコードをGHCiで打ち込んで試そうとしてるんですが、

Prelude> module Main where
Prelude> import Parsec

: error:
Could not find module ‘Parsec’
Perhaps you meant Parser (needs flag -package-key ghc-8.6.5)

モジュールが見つからないと言われます
最新バージョンの名前空間?と明らかに違っているので、
ここ[Text.Parsec](http://hackage.haskell.org/package/parsec-3.1.14.0/docs/Text-Parsec.html)で、この二行

import Text.Parsec.Prim
import Text.Parsec.Combinator

を見付け書いたところ

Prelude> import Text.Parsec.Prim
Prelude Text.Parsec.Prim> import Text.Parsec.Combinator

<続く>

883 デフォルトの名無しさん
2019/12/23(月) 22:00:22.40 ID:/flai8cL

Prelude Text.Parsec.Prim Text.Parsec.Combinator> simple :: Parser Char

:6:11: error:
Not in scope: type constructor or class ‘Parser’
Perhaps you meant one of these:
‘Parsec’ (imported from Text.Parsec.Prim),
‘ParsecT’ (imported from Text.Parsec.Prim)
Prelude Text.Parsec.Prim Text.Parsec.Combinator> simple :: Parsec Char

:7:11: error:
? Expecting two more arguments to ‘Parsec Char’
Expected a type, but ‘Parsec Char’ has kind ‘* -> * -> *’
? In an expression type signature: Parsec Char
In the expression: simple :: Parsec Char
In an equation for ‘it’: it = simple :: Parsec Char
Prelude Text.Parsec.Prim Text.Parsec.Combinator> simple :: ParsecT Char

:8:11: error:
? Expecting three more arguments to ‘ParsecT Char’
Expected a type, but
‘ParsecT Char’ has kind
‘* -> (* -> *) -> * -> *’
? In an expression type signature: ParsecT Char
In the expression: simple :: ParsecT Char
In an equation for ‘it’: it = simple :: ParsecT Char

引数が足りないみたいなことを言われます
英語も怪しいのに英語の解説も使えないとなるとどうして良いやら…

884 デフォルトの名無しさん
2019/12/23(月) 22:04:05.15 ID:pH3djwe1

haskell ide engine って今どんな使用感?
そろそろ spacemacs haskell layer (中身 intero) から乗り換えようと思ってんだけど
未だにバージョン 1 未満なのが気になった。まだ待つべきかな。

885 デフォルトの名無しさん
2019/12/23(月) 22:05:51.18 ID:/flai8cL

880
おお、ありがとうございます
そっちでやってみます

886 デフォルトの名無しさん
2019/12/23(月) 22:07:10.46 ID:wextYSDX

877
クヌースなんかもそんなもんだぞ。
プログラム理論と実装ガツガツやる能力は別物だから。

887 デフォルトの名無しさん
2019/12/23(月) 22:28:25.82 ID:pH3djwe1

"> 883
このエラーメッセージ
Not in scope: type constructor or class ‘Parser’
これは Parser が見つからないよ。みたいな意味

検索サイトのフーグルを「パッケージ指定」機能を使って探すと
https://hoogle.haskell.org/?hoogle=Parser%20package%3Aparsec
Parser は import Text.Parsec.String すれば使えるってことが解って、
同じように letter の場所も調べられる。

attoparsec や megaparsec にも似たやつあるっぽいから、何となくで読み替えていけばいいんじゃないかな。

888 デフォルトの名無しさん
2019/12/23(月) 23:28:55.39 ID:fuVSP632

886
> クヌースなんかもそんなもんだぞ。

Knuthはそんなことはないだろ
TeXもMetafontも最初のはKnuth自身が実装したのだから

> プログラム理論と実装ガツガツやる能力は別物だから。

圏論なんかの知識は実装と全く関係ないからね、そういう方面に明るいのと実装能力とは全く無関係だ

889 デフォルトの名無しさん
2019/12/23(月) 23:34:33.07 ID:A/dzNHpI

KnuthやLinusって
圏論どころかカプセル化・継承・ポリモーフィズムすら使ってない印象がある
実装能力とは全く無関係だし

890 デフォルトの名無しさん
2019/12/24(火) 07:35:31.98 ID:nFH9kbNZ

889
は?
そんなの日本の組み込み現場の奴らの大多数と同レベルじゃん

891 デフォルトの名無しさん
2019/12/24(火) 08:12:11.27 ID:IDR7+yeu

何をもってknuthにスキルを疑うのか分からんのだけど、彼のプログラミングスキルが
ゴミクズな世界があったとしても、scratchから書く問題ならアルゴリズムだけで
他の人より速いもの書いてそう

892 デフォルトの名無しさん
2019/12/24(火) 16:43:33.89 ID:Y/zbyQKx

876
すごくタイムリーに reddit に似た質問が上がってるんだが偶然?
https://www.reddit.com/r/haskell/comments/ee6lwy/resources_for_learning_parsec/

893 デフォルトの名無しさん
2019/12/24(火) 21:34:10.54 ID:4c9jV6+e

本人がtex書くまでこれほど大変と思ってなかったいうとるやん。
そのあとの文芸プログラミングとか、cのコード見てても、これあかんなとしか思わんわ。

894 デフォルトの名無しさん
2019/12/27(金) 22:57:25.24 ID:LIBStdaN

Getting started with Haskell
https://stackoverflow.com/questions/1012573/getting-started-with-haskell

https://stackoverflow.com/questions/tagged/haskell
https://stackoverflow.com/questions/tagged/functional-programming
https://stackoverflow.com/questions/tagged/monads
https://stackoverflow.com/questions/tagged/category-theory
https://stackoverflow.com/questions/tagged/functor
https://stackoverflow.com/questions/tagged/ghc
https://stackoverflow.com/questions/tagged/ghci
https://stackoverflow.com/questions/tagged/haskell-stack
https://stackoverflow.com/questions/tagged/cabal
.
.
.

895 デフォルトの名無しさん
2019/12/28(土) 23:16:17.55 ID:wvWoDqVP

Haskellは小さいプログラムを作るには最適なんだけど
大きいプログラムになるとメモリ周りの最適化が困難なのよね
実行結果自体は正しいからテストすり抜けるだろうし
バックエンドで採用しても
本番環境で初めてメモリヤバイと気付いて死ぬ未来しか見えない

896 デフォルトの名無しさん
2019/12/29(日) 00:21:25.50 ID:J8aGFBX9

自家用ジェット機と大型旅客機みたいなイメージかな

897 デフォルトの名無しさん
2019/12/29(日) 11:10:02.50 ID:09k8oxGS

死ぬことなく成功させた例
https://serokell.io/blog/top-software-written-in-haskell

898 デフォルトの名無しさん
2019/12/29(日) 13:22:56.43 ID:/UuMyPob

897
最初に上がってたsigmaの記事を発見したぞ
https://engineering.fb.com/security/fighting-spam-with-haskell/
なるほどHaskellを実運用するコツはGHCの魔改造から着手する事なのか
・・・って真似できるかーい!!

899 デフォルトの名無しさん
2019/12/29(日) 15:18:21.26 ID:n6JnyT9E

898
ノリで採用したら地獄を見た感がヒシヒシと伝わってくる記事だね
その後facebookでHaskellを採用していない事実で察し
https://livedoor.blogimg.jp/sag_alt/imgs/7/e/7ece2698.png

900 デフォルトの名無しさん
2019/12/29(日) 16:42:39.91 ID:ADVmDYvb

遅延評価を諦めて型システムとパターンマッチ系統だけを
よくわからないけどCとかC++辺りに持っていくじゃだめかな

901 デフォルトの名無しさん
2019/12/29(日) 22:43:02.62 ID:J8aGFBX9

何を諦めたら最適解になるか?

これは愚問

902 デフォルトの名無しさん
2019/12/30(月) 01:49:49.36 ID:zGgGf8ov

赤黒木のコード読んでいたら
関数の定義に型情報があるけど
型推論で処理されるコード部分には型情報がない
目視で定義ーコード部を交互確認すると結構きつい

抽象化には貢献してるけど、人間が読み下すのは大変、オレはコンピュータじゃない(怒
そんな感じ

903 デフォルトの名無しさん
2019/12/30(月) 07:02:47.72 ID:gVSpb87m

そんなのエディタにやらせればいい

904 デフォルトの名無しさん
2019/12/30(月) 09:12:01.80 ID:zGgGf8ov

要件定義が整っている関数の書き下ろしと
プログラムで記述されたコードの読み下しは難度が異なる
Haskellのコードは情報密度が高い事と抽象度の高さが強烈に効く

905 デフォルトの名無しさん
2019/12/30(月) 09:50:40.36 ID:aMPpMkgz

Hakellだしコード読めば分かるだろ(コメントなし)
↓数カ月後
俺の書いたコードなのに意味が分からない・・・

906 デフォルトの名無しさん
2019/12/30(月) 10:41:43.52 ID:0IC+e4Ro

工学と名のついた無根拠な宗教が蔓延ってる言語よりは科学してるだけマシ

907 デフォルトの名無しさん
2019/12/30(月) 12:14:13.13 ID:WAqdspci

905
次の日とか
その日のうちでも
意味が分からなくなることがある

908 デフォルトの名無しさん
2019/12/30(月) 13:26:36.21 ID:khitn85K

赤黒木は左右対称のコードを2回書かされるから書きたくない
コードを読まなくても分かる
読む前から分かることをどれだけ知っているかが重要
読み始めてから努力するのは遅い

909 デフォルトの名無しさん
2019/12/30(月) 16:27:15.32 ID:LA/Q6l88

899
>その後facebookでHaskellを採用していない

https://engineering.fb.com/security/simon-marlow/

910 デフォルトの名無しさん
2019/12/30(月) 20:14:21.30 ID:fOmQS2Mv

https://stackshare.io/haskell

911 デフォルトの名無しさん
2019/12/30(月) 21:52:49.75 ID:rDj24KcK

909
よく読め、受賞は2019年だが
受賞内容は2009年の功績の話だぞ
そこで語られてる内容も2014年のGHC魔改造の件の話だし
5年も経過してるのに未だにその話しか出てこないって事はそういう事よ

912 デフォルトの名無しさん
2019/12/30(月) 22:25:35.97 ID:khitn85K

よく読んだら分かること
読まなくても分かること
普遍的な方を重視するのがいいと思うよ

913 デフォルトの名無しさん
2019/12/30(月) 23:48:10.12 ID:LA/Q6l88

911
枯れてきてるんじゃない?

https://github.com/facebook/Haxl

914 デフォルトの名無しさん
2019/12/31(火) 00:12:07.17 ID:Lj+eqMzp

ちなみにFacebook自身は2015年の投稿で2年かけて
Sigmaの主要技術をHaskellに移行したといっている
https://engineering.fb.com/security/fighting-spam-with-haskell/

スライドもある
http://multicore.doc.ic.ac.uk/iPr0gram/slides/2015-2016/Marlow-fighting-spam.pdf


そしてSigma の Software Engineering Manager の公募を最近LinkedInでかけていた
職位はManagerだし応募要件にはHaskellスキル必須とは記載していないようなので
Haskellが実用的に使われているっていう傍証にはならないけどプロジェクトは生きてる様子

またその後別の各技術にとってかわられたという情報もなさげ

915 デフォルトの名無しさん
2019/12/31(火) 01:50:17.69 ID:Lj+eqMzp

紹介済み?
https://serokell.io/blog/haskell-highlights-2019?

916 デフォルトの名無しさん
2019/12/31(火) 02:29:04.76 ID:MpeDYErb

ナイス

917 デフォルトの名無しさん
2019/12/31(火) 23:30:17.57 ID:a+xjNkxx

898
haskellやってる奴が評価されるのはその手の最適化できることを見込まれてるからだぞ。

918 デフォルトの名無しさん
2020/01/01(水) 04:13:12.99 ID:IaAF7ILo

Haskellを始めたばかりの者です
do構文は多用しても良いのですか?
手続き型を書いているような気分になります
関数型言語は初めてなので不安です

919 デフォルトの名無しさん
2020/01/01(水) 09:08:22.50 ID:msO/HyKq

918
いいよ。モナドは手続きを実現するのに役立つ抽象だよ。
でもアプリカティブで用が足りるならアプリカティブを使うべき。
IO モナドを do で合成するシーンが多いならリファクタリングの余地があるかも。
Control.Monad や Control.Applicative のユーティリティが利用できないか検討してみて

920 デフォルトの名無しさん
2020/01/01(水) 09:16:52.80 ID:msO/HyKq

=>= 2020年の抱負 =>=

・珠玉本を再開したい。少なくとも二度目の四天王登場回までは行きたい
・Haskell でごはん食べる

921 デフォルトの名無しさん
2020/01/01(水) 10:49:49.64 ID:1YmeR5a8

豊富なんてかいちゃって意識高い系かよwwwwww

922 デフォルトの名無しさん
2020/01/01(水) 11:24:31.90 ID:msO/HyKq

921 いいでしょw 新年なんだし

923
2020/01/01(水) 13:25:14.55 ID:tqBP4ADq

Haskellの未来

924 デフォルトの名無しさん
2020/01/01(水) 16:23:17.36 ID:0CkTsEaj

一般化が未来だと仮定すると未来は...

925 デフォルトの名無しさん
2020/01/02(木) 06:03:17.61 ID:Ee9Lo0CG

920
海外にはRemote OKなところあるよ

A List of companies that use Haskell
https://github.com/erkmos/haskell-companies

926 デフォルトの名無しさん
2020/01/02(木) 07:13:34.68 ID:RghxuQ5t

OSS として良さげなツールを作って
Github Sponcers で支援を受ける
って方針を考えてる。どうかな

927 デフォルトの名無しさん
2020/01/02(木) 07:26:54.44 ID:RghxuQ5t

925
名古屋の時計販売店BIGMOONさん
https://www.e-bigmoon.com
https://haskell.e-bigmoon.com ってお役立ちHaskell 情報がありがたいサイトやん。
中の人、時計屋さんだったのか…

928 デフォルトの名無しさん
2020/01/03(金) 13:05:21.13 ID:EVicjzWY

Haskellは妙にテクニカルな部分が多い気がする
2変数関数fと1変数関数gを合成するときに
g . f
ではだめで
g .: f where (.:) = (.) (.) (.)
って書くのとか良く思いつくなって感じ

929 デフォルトの名無しさん
2020/01/03(金) 13:32:58.92 ID:r+r/o5nr

928
それは、ポイントフリーで書いているからテクニカルに見えるたけで、
引数を明記すればビギナーにも理解できる式になるぞ。
やってみれば分かる。

他のもそうだ。
例えばライブラリの作者がポイントフリーで書いているのは、
その方がベテランの作者やコミュニティーにとって読みやすいからだ。
彼らもビギナーを相手に解説する際は、
自分達には多少洗練されていない様に見えても、
ビギナーにとっての読みやすさを優先する。

日本語の文章における「漢字」と「かな」の関係のようなものだ。

930 デフォルトの名無しさん
2020/01/03(金) 13:49:51.60 ID:EVicjzWY

929
(((.) (.) (.)) g f) a b
をパパっと
g (f a b)
に式変形できる自信が無い

931 デフォルトの名無しさん
2020/01/03(金) 13:53:52.89 ID:biPe5Zol

g . f がだめな理由は型なので
fun g;
fun > f;
このような型を宣言できる任意の言語に同じ問題がある
また、他の言語で問題が解決されたらHaskellでも解決できる

932 デフォルトの名無しさん
2020/01/03(金) 14:08:31.95 ID:EVicjzWY

931
g :: b -> c
f :: a1 -> a2 -> b
に対して
(.) :: (b -> c) -> (a -> b) -> a -> c
の a を a1 -> a2 と解釈してくれれば話が速いんだけどね
a1 -> a2 -> b が実際には a1 -> (a2 -> b) で要は(->)が右結合だから駄目なのよね

933 デフォルトの名無しさん
2020/01/03(金) 15:06:47.95 ID:r+r/o5nr

930
すまん、そういう話ではない。

「妙にテクニカルな部分が多い」と言うのは、
君の感じたhaskellの不満点や欠点なんだと俺は捉えたが、違うか?

2変数関数と1変数関数とを合成する関数(.:)の「型がまず先」にあって、

  (.:) :: (c -> d) -> (a -> b -> c) -> (a -> b -> -> d)

これを実装するのに

  (.:) = (.) (.) (.)

と書く者もいて、君に妙にテクニカルだと感じさせるのかもしれないが、

  (.:) g f = \a b -> g (f a b)

こう書けば、ビギナーにも容易に意味が読みとれる。
テクニカルでは全然ないだろう。

君が妙にテクニカルだと感じる大部分はhaskellの生来のものではなく、
単にビギナーに読めるようにも書けるコードをたまたまテクニカルに書いただけだ。

身の丈や好みに合った書き方をすれば不満に感じることはないだろう、と言いたかった。

934 デフォルトの名無しさん
2020/01/03(金) 15:11:49.96 ID:biPe5Zol

932
随伴の事か

935 デフォルトの名無しさん
2020/01/03(金) 16:07:32.31 ID:EVicjzWY

933
Haskellに不満を持ってるとかではなくて単に凝った式に良く出会うというだけの話よ
そして凝った式を同値変形で分かりやすい式に変形するのが難しいことも多いと思う
個人的にはどう実装するかよりもどう同一視するかの方に興味がある

936 デフォルトの名無しさん
2020/01/03(金) 16:22:44.44 ID:r+r/o5nr

935
そうだったのか、俺の完全な勘違いだった。
長文でレスの流れぶった切ってすまなかった。

937 デフォルトの名無しさん
2020/01/03(金) 16:34:21.29 ID:EVicjzWY

936
謝ることは無いよ
自分も言葉足らずだったし
興味深い話が聞けて良かった

938 デフォルトの名無しさん
2020/01/03(金) 18:40:52.72 ID:UgBOwnvC

凝った式を書ける俺ってイケてる!っていう中二病の文化なんでしょ

939 デフォルトの名無しさん
2020/01/03(金) 21:30:15.19 ID:biPe5Zol

また心理の話してる
メンタリストの文化なのかな

940 デフォルトの名無しさん
2020/01/03(金) 21:54:01.12 ID:jtHjGBI5

リストの1要素を書き換える関数が用意されてないのは、それが非推奨だからなの?
配列みたいな気分では使えないのかな

941 デフォルトの名無しさん
2020/01/03(金) 22:42:07.13 ID:biPe5Zol

IOが非推奨ではないから
まるでIOが非推奨であるかのような関数が用意されていない事に違和感はない

942 デフォルトの名無しさん
2020/01/07(火) 17:00:22.12 ID:xmklvGxc

書き換え・・・?
Haskellに書き換えという概念がそもそもあったっけ?

943 デフォルトの名無しさん
2020/01/07(火) 18:53:28.45 ID:KmM+4rGq

書き換えができるデータ型は定義できる
それを定義したモジュールにはその概念がある
そのモジュールと概念がHaskellの中にあるのか外にあるのかは知らん

944 デフォルトの名無しさん
2020/01/19(日) 01:06:57.37 ID:7oa0iQg0

すみません質問なんですが、

f [5,4,8,7] == [5,(5+4),(5+4+8),(5+4+8+7)]

みたいな関数を作りたくて

g :: [Int] -> ([Int],[Int])
g (ys) = (ys,[1..length(ys)])

h:: ([Int],[Int]) -> [Int]
h (xs, []) = []
h (xs,y:ys) = sum (take y xs) : h(xs,ys)

f = h.g

と書いたんですけど、これって関数合成以外の方法で書けますか?
出来れば一つの関数で定義したいんですが、行き詰ってます(汗

945 デフォルトの名無しさん
2020/01/19(日) 01:34:42.77 ID:lT5Fy0hi

コレはダメ?

sumlist [] = []
sumlist (x:xs) = x:(map (+x) $ sumlist xs )

main = do
print $ sumlist [5,4,8,7]
print $ take 10 $ [1..]
-----
[5,9,17,24]
[1,2,3,4,5,6,7,8,9,10]

946 デフォルトの名無しさん
2020/01/19(日) 01:37:22.32 ID:lT5Fy0hi

間違った

sumlist [] =[]
sumlist (x:xs) = x:(map (+x) $ sumlist xs )

main = do
print $ sumlist [5,4,8,7]
print $ take 10 $ sumlist [1..]
----
[5,9,17,24]
[1,3,6,10,15,21,28,36,45,55

947 デフォルトの名無しさん
2020/01/19(日) 04:12:57 ID:E4qdczJe

import Data.List (inits)

948 デフォルトの名無しさん
2020/01/19(日) 08:14:33 ID:to1IOlmG

Data.List.scanl1 (+) [5, 4, 8, 7] == [5, 9, 17, 24]

949 デフォルトの名無しさん
2020/01/19(日) 09:55:55.71 ID:JUDuINU+

やるじゃん

950 デフォルトの名無しさん
2020/01/19(日) 10:18:10 ID:6mEdluRX

">947-948
おお、そんなのがあるのか。、

951 デフォルトの名無しさん
2020/01/19(日) 18:10:44 ID:7oa0iQg0

944です。返信が遅れてしまってすみません。
">945.947-948 さん早速の返答ありがとうございました。

952 デフォルトの名無しさん
2020/01/19(日) 22:57:51 ID:JsYzYAKP

4.7. GHCi commands
https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html#ghci-commands

Prelude>:?
Prelude>:browse Data.List
scanl :: (b -> a -> b) -> b -> [a] -> [b]
GHC.List.scanl' :: (b -> a -> b) -> b -> [a] -> [b]
scanl1 :: (a -> a -> a) -> [a] -> [a]
scanr :: (a -> b -> b) -> b -> [a] -> [b]
scanr1 :: (a -> a -> a) -> [a] -> [a]

953 デフォルトの名無しさん
2020/01/20(月) 00:41:52.39 ID:TXkt06UM

Haskellの事を知れば知る程(圏論含む)、数学ってプログラミング言語だなと思う。
コンピュータが登場する遥か以前からあるプログラミング言語。
そうなると数学者はある種のプログラマーと言える。

ただ、数学はコンピュータに計算させるのではなく、自分で計算するから再帰みたいなループ構造は面倒臭い。
そこでループ構造を排除するアルゴリズム(法則や公式)を考え出して来たと考えられる節があって…。
そう考えると、コンピュータの登場で人間の効率的なアルゴリズムを考える能力が退化したかも知れん。
とか、考えてみたり。

954 デフォルトの名無しさん
2020/01/20(月) 13:04:34 ID:0GX6odYx

ΣとかΠは実質ループだが数学ではループしないで計算出来る

955 デフォルトの名無しさん
2020/01/20(月) 18:51:38 ID:9eVX0YAp

無理数や積分はほとんど計算してない
C++のtemplate実体化してないメタプログラミングと同じ

956 デフォルトの名無しさん
2020/01/20(月) 19:20:02.11 ID:h2nRkU1r

カリーハワード対応しらんのか?

957 デフォルトの名無しさん
2020/01/20(月) 19:35:03.18 ID:LcZgWv4y

普段のプログラミングでカリーハワード対応が出てくる場面ってどういうとき?
型レベルで凝ったことをするとプログラムを証明として書くことがあると思うんだけど、
その証明として書いたプログラムは実行するとどうなるの?
この辺少し勉強したいんだが書いたことも見たこともなくてさっぱり想像つかない

958 デフォルトの名無しさん
2020/01/20(月) 20:28:12.96 ID:9eVX0YAp

C++のデザインパターンとHaskellの代数的データ型の同型対応

959 デフォルトの名無しさん
2020/01/21(火) 08:51:19.90 ID:lxIBo8y+

数式の末尾再帰なfib関数を見た時、手続き型言語で書く副作用バリバリのfib関数との共通点が見えた。
(過去どこかに本の中身の画像落としたんだが、まだあるかは知らん)

そこで一つの仮説が浮かんだ。
入出力を伴わない関数であれば、副作用のある関数でも正しく動く関数は数式と相互に変換出来るのでは?
(入出力も含めるなら、相互にHaskellと変換出来る?逆に、バグがあるなら相互変換は無理?)

数学専門じゃないから、証明とか出来ないけども。

960 デフォルトの名無しさん
2020/01/21(火) 09:00:45 ID:Hkcle0K4

人に伝える努力をして欲しい
ポエムいらない

961 デフォルトの名無しさん
2020/01/21(火) 11:28:06 ID:d/fzPC0C

何か知りたいことがあるのか?
需要がないところを努力するのは意味不明だし、努力して欲しいと言うのも意味不明

962 デフォルトの名無しさん
2020/01/21(火) 11:52:36 ID:m86EWX9f

数学だけだなく国語力もないのな
努力といわれてバカにされてることに気付かない

963 デフォルトの名無しさん
2020/01/21(火) 13:47:51.38 ID:L/RpGA77

ST で検索

964 デフォルトの名無しさん
2020/01/21(火) 17:55:02.99 ID:sFJRAv+Q

表示的意味論の話かな

965 デフォルトの名無しさん
2020/02/04(火) 12:34:05 ID:Np8xXmTj

数学、糞苦手な俺
プログラムで表現出来る数学分野ってごく一部だと思ってたけどそうでもないんか?

概念操作のプロセスと計算とじゃ大きな開きがあると思うんだが
それを鬼計算量で埋められるんかね

966 デフォルトの名無しさん
2020/02/04(火) 13:19:01 ID:jKHkWlP0

オペレーションズリサーチって言った分野は数学必須だろうね
ベイズ統計とか当たり前のように使われているし
カルマンフィルタもそう

確率統計/多変量解析はコンピュータやる人間ならそれなりに必須だと思うし
現実世界に役立っている

ここでよく題材として挙がるのは圏論だけど これは俺も必要性はあんま感じない

967 デフォルトの名無しさん
2020/02/04(火) 18:06:11.81 ID:6o+cJy8H

959
手続き型言語でのwhileなどの繰り返しの一回に対し、そこで用いられている変数の値の変化を、末尾再帰関数の引数の変化に置き換えれば、きれいな1重whileは、きれいな末尾再帰関数に置き換わると主張しているんだよね。

968 デフォルトの名無しさん
2020/02/04(火) 20:02:08 ID:+caUnTFf

フリーハンドで描いた線と定規で描いた線を比較するようなもの
実質的な意味は同じ
強いて言うならマナーの良さが違うだけ

969 デフォルトの名無しさん
2020/02/04(火) 22:57:24 ID:LyYVEub6

静的単一代入形式に変換して、
φ関数の出てくるところを別関数の呼び出しに変換すれば、
副作用のない状態には持ち込めるかな

970 デフォルトの名無しさん
2020/02/05(水) 18:14:57 ID:fFjiekZv

">966
> ここでよく題材として挙がるのは圏論だけど これは俺も必要性はあんま感じない

プログラムを書く立場ならば圏論なんて知る必要は全くないよ

そもそも仮に圏論を知らないと良いプログラムが書けないプログラミング言語があったとしたら
そんなプログラミング言語は使い物にならない

Haskellerなど一部のプログラマの間での昨今の圏論ブームは少なくとも私には単なる一種のファッションの流行にしか見えないし余り意義を認めない
他人の趣味にケチをつける気はないので、やりたければどうぞ御自由に、としか言いようがない

圏論を知る必要があるとすればプログラムを書く人間ではなくて新しいプログラミング言語の設計をする人間(の一部)だ

ただ一つだけ圏論の勉強を擁護しておくと、規模の大きなソフトウェアをメンテナンスしやすい見通しのよい構造を持つように設計する上では
抽象化と一般化という思考能力、ある事柄や概念と他のどの事柄とが対応するのかを適切に理解し判断する能力は非常に重要だ

そして数学において圏論の最も重要な効用は正にそういう一般化や抽象化といった思考法を書き表すための言葉としてだ
数学である分野での成果(例えば幾つかの定理や定義)を全く別の分野へと転用するといった数学の発展させ方が可能になったのは
正に20世紀中盤に圏論という言葉が生まれたからこそのお蔭だ

だからプログラマが圏論そのものを勉強する必要性は乏しいと思うが、圏論を勉強して理解できる能力と大規模のソフトウェアを良い構造で設計できる能力とは
間違いなく共通した部分があり、正の相関があるのは確実だと個人的には考えている

そういう意味では圏論の勉強は大規模ソフトウェアの設計に向く設計者か否かのフィルタリングに使えるかも知れないね

971 デフォルトの名無しさん
2020/02/05(水) 18:19:38.12 ID:hXjs1EZI

970
>そもそも仮に圏論を知らないと良いプログラムが書けないプログラミング言語があったとしたら

CPL(Categorical Programming Language)
まずは Wikipedia を参照汁

972 デフォルトの名無しさん
2020/02/05(水) 19:04:41 ID:2rKdW1Ec

圏論って知らずに使ってるんやろ
それでええやん

973
2020/02/05(水) 20:36:57.76 ID:uTOW/8lH

圏論ってなんですか?

974 デフォルトの名無しさん
2020/02/05(水) 21:17:36 ID:2r8PGoiv

アジア文化圏

975 デフォルトの名無しさん
2020/02/05(水) 21:42:26.50 ID:/Jhw33Vx

一つ言えるのは圏論ってなんか語りたくなっちゃうものなんだということ。
プログラムにおいては全く意味はない。
計算機の動きを抽象化する道具としてそんな筋のいいものではない。
数論でも勉強するなら意味はあるだろうが。

976 デフォルトの名無しさん
2020/02/05(水) 23:38:47.13 ID:m+XqauaX

圏論はどちらかといえばポイントフリー
λとか∀とか∃とかパターンマッチとかで変数を束縛する言語
に違和感があれば圏論を語りたくなる

977 デフォルトの名無しさん
2020/02/06(Thu) 01:01:03 ID:OGs/tKtL

">970
大規模ソフトウェアのメンテにおいて、
圏論を知らないとこのように失敗するが、
知っているとこのように成功する、
という具体例を挙げられますか?

または、具体例を挙げて説明している本やブログ、
カンファレンスなどを紹介できますか?

978 デフォルトの名無しさん
2020/02/06(Thu) 04:11:03 ID:7nZd7Xb0

">977
圏論は、いわゆる「銀の弾丸」ではない

979 デフォルトの名無しさん
2020/02/06(Thu) 07:32:25 ID:OGs/tKtL

">978
それは分かっています。

">970 が圏論による成功例を知っているのなら教えてほしかったのです。

一件も挙げられず、ただ大規模ソフトウェアには大事だと言っているだけでしたら、
とても残念です。

980 デフォルトの名無しさん
2020/02/06(Thu) 08:35:23 ID:7WdfZf7H

お前が圏論理解してかつ大規模ソフトウェア開発で失敗したら反証になるじゃん
がんばれ

981 デフォルトの名無しさん
2020/02/06(Thu) 11:02:50 ID:OGs/tKtL

">980
この件に関して反証しても、大した意味はないと思います。

具体的な成功例を一つでも知ることの方が遥かに役立つのではないでしょうか。

982 デフォルトの名無しさん
2020/02/06(Thu) 11:23:47 ID:gLliKWEs

圏論だのモナドだの相変わらずだなあ
もっと楽しい話をしようぜ
コモナドとかProfunctor Opticsとかサ

983 デフォルトの名無しさん
2020/02/06(Thu) 11:47:37 ID:sigCaOr9

横からだが
個人的に考えてる、と断ってるじゃん
単なる個人の感想
お前はそこに証拠を求めてる
何がしたいの?

984 デフォルトの名無しさん
2020/02/06(Thu) 12:12:18 ID:OGs/tKtL

">983
個人的でもそう考える根拠が何かあると思います。
何かの記事でそう語っているのを見たとか、
自分が携わったプロジェクトで実感したとか。

記事なら出典を知りたいですし、
実感したのならもう少し具体的な話を聞きたいです。

と言うのも、今までもここで圏論を語る人はたくさんいましたが、
私の知る限り誰一人として役立った例を具体的に語った人はいませんでした。

">970 は久しぶりに長文で熱く語っておられるので、
もしや具体例を挙げられるのではと思い聞いてみました。

985 デフォルトの名無しさん
2020/02/06(Thu) 13:45:00 ID:sNihMBVC

">977
http://kymst.net/index.php?plugin=attach&amp;refer=MathDocs&amp;openfile=mjk01bt1.pdf

986 デフォルトの名無しさん
2020/02/06(Thu) 22:21:29 ID:AbsWoeSu

">971
そりゃ学位論文レベルの言語ならあるさ
そもそもそのCPLとCSL(Categorical Specification Language)とを定義した萩野達也氏のエジンバラ大学に提出した件の学位論文は私も読んだ
そして理論的には大変に興味深い研究だと思ったよ

だが私が前の投稿で書いた「使い物にならない」の定義、つまり肯定形の「使い物になる」はソフトウェア工学的な意味で実用になるという意味だ
つまりは「多数のプログラマによって実用プロジェクトで使える言語」という意味だ、より具体的な基準が必要だと言うのならば
「最低でも100万行のソフトウェア開発をそのプログラミング言語で行える」という意味だ

君が私の主張である「使い物にならない」を否定したければ、100万行とは言わぬまでもせめて10万行のソフトウェアを
複数人で開発するのにCPLだけでやってみてくれ、もちろん必要なCPLのライブラリ類は自分達で開発してね

987 デフォルトの名無しさん
2020/02/06(Thu) 22:27:12 ID:sUAmWprm

簡単な判別法がある
デバイスドライバーが書けない言語は使い物にならない

988 デフォルトの名無しさん
2020/02/06(Thu) 22:27:40 ID:AbsWoeSu

">977
だから能力として近いと言っているだけだよ
圏論という理論を勉強して理解できる能力と、大規模ソフトウェアを良い構造で設計する能力とはね
私がそう考えている理由は、どちらも抽象化や一般化といった思考の能力が重要だからだ

圏論を知らなければ良い設計が出来ないと言っている訳では決してない

970の最後の3行(空行はカウントしない)の意味するところは
勉強すれば圏論を理解できるようになる人は(抽象化や一般化の思考能力が高いので圏論を勉強していなくても)良い設計ができるだろう、という予想だ

989 デフォルトの名無しさん
2020/02/06(Thu) 23:07:57 ID:AbsWoeSu

">987
> デバイスドライバーが書けない言語は使い物にならない

それは又一つ別の定義だね
私個人としてはアプリケーションしか書けないプログラミング言語でも「使い物になる」ことを認めるけれども
そういう定義をするソフトウェア技術者の立場はそれとして否定する気はない

990 デフォルトの名無しさん
2020/02/06(木) 23:44:41.47 ID:r1DVX1M4

人間の社会の役に立つ勢力の定義が存在するのか?
まずは存在を疑うのが無駄な努力をしない秘訣

991 デフォルトの名無しさん
2020/02/07(金) 00:02:21 ID:sQmwkFjl

圏論が実用言語に向いてないのと同様に、989は5chに向いてない

992 デフォルトの名無しさん
2020/02/07(金) 00:15:35 ID:MJwijXd8

そんなことないでしょ

993 デフォルトの名無しさん
2020/02/07(金) 01:41:24 ID:Fnc0TnWe

オオオオチンポ

994 デフォルトの名無しさん
2020/02/07(金) 08:09:04 ID:ruz5n033

javascriptでデバイスドライバは書けないわな
圏論とやらが必要な分野で使えばいいだけの話

995 デフォルトの名無しさん
2020/02/07(金) 12:13:54 ID:PWhN+bN7

">990
未知のウィルスに対する検疫等の防衛が出来るのも人間に役立つ能力
いまの役人の対応観てたらあほばっかりだと思うだろ

996 デフォルトの名無しさん
2020/02/07(金) 13:01:46.27 ID:3L88mYwi

まだ定義してないのにフライングできる奴は
定義が存在しないパターンを知ってるからそれができる

997 デフォルトの名無しさん
2020/02/08(土) 16:14:00 ID:pTX+YoHa

HListのインサートとかソートとかのやり方の実装が乗ってるホームページ教えて
作ろうとしても難しくてできないから

998 デフォルトの名無しさん
2020/02/10(月) 18:21:44.17 ID:gQeDR86I

次スレ
https://mevius.5ch.net/test/read.cgi/tech/1581326256/

999 デフォルトの名無しさん
2020/02/10(月) 19:36:01.30 ID:gQeDR86I

997
HList パッケージのソースをみるしかないかも
https://hackage.haskell.org/package/HList-0.5.0.0/docs/src/Data-HList-HSort.html

1000 デフォルトの名無しさん
2020/02/10(月) 20:28:59 ID:Q/biUbUo

">999
あざーす

1001 1001
Over 1000 Thread

このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 377日 11時間 23分 12秒

1002 過去ログ ★
[過去ログ]

<em>■ このスレッドは過去ログ倉庫に格納されています</em>

1 2 3 最新 全部 

2ch勢い総合ランキング

【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★2 (1003)
勢い 78282.93 54.36レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★7 (1001)
勢い 63221.05 43.90レス/分 ニュース > ニュース速報+
千葉市長、安倍首相の小中高に臨時休校要請に「衝撃。社会が崩壊しかねません」 ★4 (1002)
勢い 62643.32 43.50レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★4 (1001)
勢い 62086.43 43.12レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★13 (1001)
勢い 54020.24 37.51レス/分 ニュース > ニュース速報+
全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 (1001)
勢い 53026.61 36.82レス/分 ニュース > ニュース速報+
千葉市長、安倍首相の小中高に臨時休校要請に「衝撃。社会が崩壊しかねません」 ★3 (1001)
勢い 52793.77 36.66レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★6 (1001)
勢い 49477.35 34.36レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★3 (1001)
勢い 48506.11 33.68レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★10 (1001)
勢い 46850.70 32.54レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★19 (1001)
勢い 46175.33 32.07レス/分 ニュース > ニュース速報+
岡山県内39校で集団風邪 インフルか、患者は計981人 ★3 (1001)
勢い 43834.97 30.44レス/分 ニュース > ニュース速報+
千葉市長、安倍首相の小中高に臨時休校要請に「衝撃。社会が崩壊しかねません」 ★6 (1001)
勢い 40807.25 28.34レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★12 (1001)
勢い 40114.29 27.86レス/分 ニュース > ニュース速報+
【速報】安部首相、学校をすべて休校へ [933662325] (1001)
勢い 39581.88 27.49レス/分 雑談系2 > ニュー速(嫌儲)
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★22 (1001)
勢い 38302.21 26.60レス/分 ニュース > ニュース速報+
岡山の学校で1000人規模の“集団風邪”発生。学校閉鎖へ [483053163] (1001)
勢い 38086.53 26.45レス/分 雑談系2 > ニュー速(嫌儲)
【文科省】一斉休校はあくまでも要請。休校しない判断をすることは排除しない (673)
勢い 37807.02 26.25レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★16 (1001)
勢い 37246.51 25.87レス/分 ニュース > ニュース速報+
【やってる感】安倍首相「私は(コロナ対策を)一生懸命やってる!」メディア「どういう対策を?」安倍首相「全力で取り組んでいる」 ★3 (1001)
勢い 36914.64 25.64レス/分 ニュース > ニュース速報+
千葉市長、安倍首相の小中高に臨時休校要請に「衝撃。社会が崩壊しかねません」 ★2 (1001)
勢い 36692.43 25.48レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★20 (1001)
勢い 36096.16 25.07レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★8 (1001)
勢い 35518.03 24.67レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★17 (1001)
勢い 34429.30 23.91レス/分 ニュース > ニュース速報+
【絶望の安倍政権】安倍の急転直下の全国小中高休校要請は、政府内でも反対論続出!混乱は免れない模様 ★5 (1001)
勢い 34018.63 23.62レス/分 ニュース > ニュース速報+
【NYタイムズ】日本はコロナウイルスに対処できません。政府の対応は驚くほど無能。オリンピックを開催できますか? ★2 (1001)
勢い 33717.89 23.42レス/分 ニュース > ニュース速報+
【速報】大阪市が幼・小・中学校を全校臨時休校にする方針 2月29日から3月13日 ★3 (1001)
勢い 33045.23 22.95レス/分 ニュース > ニュース速報+
【新型コロナ】「トイレットペーパーが不足する」とのデマ情報がSNS上に 薬局では品薄・行列などの混乱も★4 (1001)
勢い 32875.34 22.83レス/分 ニュース > ニュース速報+
【新型コロナ】「トイレットペーパーが不足する」とのデマ情報がSNS上に 薬局では品薄・行列などの混乱も★6 (1002)
勢い 32641.00 22.67レス/分 ニュース > ニュース速報+
広告
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★21 (1001)
勢い 31949.17 22.19レス/分 ニュース > ニュース速報+
【速報】大阪、新たに感染確認 40代男性 新幹線で移動 (1001)
勢い 31720.08 22.03レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★18 (1001)
勢い 31633.65 21.97レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★9 (1001)
勢い 30755.56 21.36レス/分 ニュース > ニュース速報+
一斉休校はやりすぎ?賛否分かれる 岩田教授「なぜ学校?なぜ休校?根拠となるデータ?誰が進言?謎ばかり (1001)
勢い 30650.54 21.29レス/分 ニュース > ニュース速報+
【効いてる効いてる】官邸、ネット上の政府批判にイラついていた ★2 (1001)
勢い 30415.10 21.12レス/分 ニュース > ニュース速報+
【絶望の安倍政権】安倍の急転直下の全国小中高休校要請は、自民党内でも反対論続出!混乱は免れない模様 ★2 (1002)
勢い 30206.84 20.98レス/分 ニュース > ニュース速報+
【速報】新型コロナウイルス、閉鎖空間で短時間浮遊の可能性 マスクでも防げない 学会が見解 (1006)
勢い 30096.83 20.90レス/分 ニュース > ニュース速報+
【絶望の安倍政権】安倍の急転直下の全国小中高休校要請は、政府内でも反対論続出!混乱は免れない模様 ★4 (1002)
勢い 29728.65 20.64レス/分 ニュース > ニュース速報+
【やってる感】安倍首相「私は(コロナ対策を)一生懸命やってる!」メディア「どういう対策を?」安倍首相「全力で取り組んでいる」 (1001)
勢い 29655.79 20.59レス/分 ニュース > ニュース速報+
【絶望の安倍政権】安倍の急転直下の全国小中高休校要請は、自民党内でも反対論続出!混乱は免れない模様 (1001)
勢い 29568.00 20.53レス/分 ニュース > ニュース速報+
【都医師会会見】陰性を確認するための検査はできません (1001)
勢い 29358.45 20.39レス/分 ニュース > ニュース速報+
【新型コロナ】「トイレットペーパーが不足する」とのデマ情報がSNS上に 薬局では品薄・行列などの混乱も★3 (1001)
勢い 28885.46 20.06レス/分 ニュース > ニュース速報+
【速報】大阪市が幼・小・中学校を全校臨時休校にする方針 2月29日から3月13日 (1001)
勢い 28713.94 19.94レス/分 ニュース > ニュース速報+
【COVID-19】首相、立法措置も (1001)
勢い 28281.66 19.64レス/分 ニュース > ニュース速報+
【国が払え】室井佑月、首相のイベント自粛要請に「違約金が発生する。どういうふうに国が補填すんの」 (1001)
勢い 27198.89 18.89レス/分 ニュース > ニュース速報+
【速報】新型コロナウイルス、北海道で2人目の死者、知内町の80代男性 (1001)
勢い 27044.88 18.78レス/分 ニュース > ニュース速報+
【絶望の安倍政権】安倍の急転直下の全国小中高休校要請は、自民党内でも反対論続出!混乱は免れない模様 ★3 (1002)
勢い 26899.93 18.68レス/分 ニュース > ニュース速報+
岡山県内39校で集団風邪 インフルか、患者は計981人 ★2 (1001)
勢い 26494.80 18.40レス/分 ニュース > ニュース速報+
【速報】大阪市が幼・小・中学校を全校臨時休校にする方針 2月29日から3月13日 ★2 (1001)
勢い 26042.28 18.08レス/分 ニュース > ニュース速報+
【速報】リーマン級ショック❗ついに来た NY株が1200ドル近い暴落、2008年10月以来の急落28日 ★2 (1001)
勢い 25557.45 17.75レス/分 ニュース > ニュース速報+
【速報】全国の公立小中高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★4 [895711916] (1001)
勢い 25414.75 17.65レス/分 雑談系2 > ニュー速(嫌儲)
【やってる感】安倍首相「私は(コロナ対策を)一生懸命やってる!」メディア「どういう対策を?」安倍首相「全力で取り組んでいる」 ★4 (1001)
勢い 25376.04 17.62レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★26 (1001)
勢い 25133.25 17.45レス/分 ニュース > ニュース速報+
【新型コロナ】「トイレットペーパーが不足する」とのデマ情報がSNS上に 薬局では品薄・行列などの混乱も (1001)
勢い 25107.96 17.44レス/分 ニュース > ニュース速報+
【やってる感】安倍首相「私は(コロナ対策を)一生懸命やってる!」メディア「どういう対策を?」安倍首相「全力で取り組んでいる」 ★5 (1001)
勢い 24705.88 17.16レス/分 ニュース > ニュース速報+
【速報】全国の公立小中高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★3 [895711916] (1001)
勢い 24689.24 17.15レス/分 雑談系2 > ニュー速(嫌儲)
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★28 (1001)
勢い 24243.72 16.84レス/分 ニュース > ニュース速報+
【速報】新型コロナウイルス、閉鎖空間で短時間浮遊の可能性 マスクでも防げない 学会が見解 ★2 (1001)
勢い 23989.24 16.66レス/分 ニュース > ニュース速報+
広告
【コロナに乗じて】#石垣のりこ(立民) 「なんでしたら枝野幸男代表を総理にして、政権与党を交代していただいてもいいですよ?」 (1001)
勢い 23514.89 16.33レス/分 ニュース > ニュース速報+
岡山県内39校で集団風邪 インフルか、患者は計981人 ★5 (1001)
勢い 23293.98 16.18レス/分 ニュース > ニュース速報+
【コロナ】急に休校と言われても 仕事は、受験は…親たちショック ★6 (1001)
勢い 23285.74 16.17レス/分 ニュース > ニュース速報+
経産省、マスクの転売や買いだめ自粛を呼び掛け 生産は通常の3倍 新型肺炎 (1001)
勢い 23192.84 16.11レス/分 ニュース > ニュース速報+
【生徒がかわいそう】通知表、どうやって渡すのか 前代未聞の休校判断に混乱 ★2 (1005)
勢い 22592.97 15.69レス/分 ニュース > ニュース速報+
【都医師会会見】陰性を確認するための検査はできません ★2 (1001)
勢い 22452.28 15.59レス/分 ニュース > ニュース速報+
【速報】全国の公立小中高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★6 [895711916] (1001)
勢い 22124.94 15.36レス/分 雑談系2 > ニュー速(嫌儲)
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★23 (1001)
勢い 22031.59 15.30レス/分 ニュース > ニュース速報+
【LIVE】新型コロナウイルス 東京都医師会が会見 (1019)
勢い 21861.34 15.18レス/分 ニュース > ニュース速報+
一斉休校はやりすぎ?賛否分かれる 岩田教授「なぜ学校?なぜ休校?根拠となるデータ?誰が進言?謎ばかり★8 (1001)
勢い 21843.09 15.17レス/分 ニュース > ニュース速報+
【じゃあどうすればいいの?】#蓮舫 、小中高は休校で保育所と学童は原則開所に疑問「科学的根拠なき線引きに驚く」★3 (797)
勢い 21674.79 15.05レス/分 ニュース > ニュース速報+
【効いてる効いてる】官邸、ネット上の政府批判にイラついていた ★7 (1001)
勢い 21664.93 15.05レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★33 (1001)
勢い 21600.00 15.00レス/分 ニュース > ニュース速報+
一斉休校はやりすぎ?賛否分かれる 岩田教授「なぜ学校?なぜ休校?根拠となるデータ?誰が進言?謎ばかり★7 (1001)
勢い 21501.07 14.93レス/分 ニュース > ニュース速報+
一斉休校はやりすぎ?賛否分かれる 岩田教授「なぜ学校?なぜ休校?根拠となるデータ?誰が進言?謎ばかり★2 (1002)
勢い 21493.29 14.93レス/分 ニュース > ニュース速報+
安倍聖帝、急すぎる全国小中高休校決断の背景は、自民内でも反対論続出!大混乱確実 [693252523] (1001)
勢い 21444.68 14.89レス/分 雑談系2 > ニュー速(嫌儲)
白鴎大学・岡田晴恵氏が告発…民間PCR検査ができない理由「国立感染研の一部OBがデータ独占のため。これはテリトリー争い」 ★3 (282)
勢い 21410.19 14.87レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★25 (1001)
勢い 21114.84 14.66レス/分 ニュース > ニュース速報+
【効いてる効いてる】官邸、ネット上の政府批判にイラついていた ★8 (1004)
勢い 20630.06 14.33レス/分 ニュース > ニュース速報+
【効いてる効いてる】官邸、ネット上の政府批判にイラついていた ★6 (1001)
勢い 20582.20 14.29レス/分 ニュース > ニュース速報+
菅直人元首相、安倍首相の公立小中高休校要請に「急遽準備もなく対策を発表。リーダとして最悪」 (1001)
勢い 20382.91 14.15レス/分 ニュース > ニュース速報+
一斉休校はやりすぎ?賛否分かれる 岩田教授「なぜ学校?なぜ休校?根拠となるデータ?誰が進言?謎ばかり★4 (1001)
勢い 20230.24 14.05レス/分 ニュース > ニュース速報+
【コロナ速報】カリフォルニア州で33人陽性★2 (1001)
勢い 20121.99 13.97レス/分 ニュース > ニュース速報+
【絶望の安倍政権】安倍の急転直下の全国小中高休校要請は、政府内でも反対論続出!混乱は免れない模様 ★7 (1001)
勢い 20113.85 13.97レス/分 ニュース > ニュース速報+
千葉市長、安倍首相の小中高に臨時休校要請に「衝撃。社会が崩壊しかねません」 ★5 (1004)
勢い 20013.24 13.90レス/分 ニュース > ニュース速報+
千葉市長、安倍首相の小中高に臨時休校要請に「衝撃。社会が崩壊しかねません」 (1001)
勢い 19792.83 13.75レス/分 ニュース > ニュース速報+
【コロナ】タクシー運転手10日間発熱も「息できてますよね?」と検査されず…識者「重症になるまで様子を見るしかないのだろう」 ★2 (1001)
勢い 19763.33 13.72レス/分 ニュース > ニュース速報+
白鴎大学・岡田晴恵氏が告発…民間PCR検査ができない理由「国立感染研の一部OBがデータ独占のため。これはテリトリー争い」 (1001)
勢い 19732.24 13.70レス/分 ニュース > ニュース速報+
【COVID-19】安倍首相、立法措置も ★2 (1001)
勢い 19718.77 13.69レス/分 ニュース > ニュース速報+
広告
【速報】北海道で新たに13人新型コロナウイルスに感染確認 10歳未満も2人 (1001)
勢い 19602.54 13.61レス/分 ニュース > ニュース速報+
千葉市長、安倍首相の小中高に臨時休校要請に「衝撃。社会が崩壊しかねません」 ★7 (1001)
勢い 19377.24 13.46レス/分 ニュース > ニュース速報+
【新型コロナ】「トイレットペーパーが不足する」とのデマ情報がSNS上に 薬局では品薄・行列などの混乱も★2 (1001)
勢い 19181.85 13.32レス/分 ニュース > ニュース速報+
菅直人元首相、安倍首相の公立小中高休校要請に「急遽準備もなく対策を発表。リーダとして最悪」 ★2 (1002)
勢い 18904.69 13.13レス/分 ニュース > ニュース速報+
【コロナ】池袋クリニック・大谷医師「入院が必要で酸素が必要な人もPCR検査を断られた」★2 (1001)
勢い 18869.23 13.10レス/分 ニュース > ニュース速報+
岡山県内39校で集団風邪 インフルか、患者は計981人 ★6 (1001)
勢い 18673.34 12.97レス/分 ニュース > ニュース速報+
【コロナ】急に休校と言われても 仕事は、受験は…親たちショック ★4 (1001)
勢い 18599.45 12.92レス/分 ニュース > ニュース速報+
【速報】東京市場、600円超安に (1001)
勢い 18590.86 12.91レス/分 ニュース > ニュース速報+
【コロナ】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★35 (826)
勢い 18546.36 12.88レス/分 ニュース > ニュース速報+
【コロナ】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★34 (1001)
勢い 18494.05 12.84レス/分 ニュース > ニュース速報+
【効いてる効いてる】官邸、ネット上の政府批判にイラついていた ★5 (1001)
勢い 18394.09 12.77レス/分 ニュース > ニュース速報+
【速報】リーマン級ショック❗ついに来た NY株が1200ドル近い暴落、2008年10月以来の急落28日 ★5 (1001)
勢い 18389.72 12.77レス/分 ニュース > ニュース速報+
【コロナ】池袋クリニック・大谷医師「入院が必要で酸素が必要な人もPCR検査を断られた」 (1002)
勢い 18357.25 12.75レス/分 ニュース > ニュース速報+
【コロナウィルス】新型コロナ「封じ込め」失敗…日本は間も無く“大不況”に襲われる 高リスク国・日本に誰が行くものか (1002)
勢い 18319.20 12.72レス/分 ニュース > ニュース速報+
【効いてる効いてる】官邸、ネット上の自分達への批判にイラついている模様 (1001)
勢い 18153.55 12.61レス/分 ニュース > ニュース速報+
【じゃあどうすればいいの?】#蓮舫 、小中高は休校で保育所と学童は原則開所に疑問「科学的根拠なき線引きに驚く」★2 (1001)
勢い 18150.54 12.60レス/分 ニュース > ニュース速報+
【サイエンス誌】日本のダイプリ対応は「大失敗」、感染者を増やす ★2 (1001)
勢い 18137.09 12.60レス/分 ニュース > ニュース速報+
【コロナに乗じて】#石垣のりこ(立民) 「なんでしたら枝野幸男代表を総理にして、政権与党を交代していただいてもいいですよ?」★2 (1001)
勢い 17983.88 12.49レス/分 ニュース > ニュース速報+
【じゃあどうすればいいの?】#蓮舫 、小中高は休校で保育所と学童は原則開所に疑問「科学的根拠なき線引きに驚く」 (1002)
勢い 17831.26 12.38レス/分 ニュース > ニュース速報+
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★27 (1001)
勢い 17812.93 12.37レス/分 ニュース > ニュース速報+
【悲報】菅直人「安倍ちゃんさ、支離滅裂。貴方はリーダーとして、人として失格です。準備すべき事もその時間も幾らでもあった筈です」 [166864446] (1001)
勢い 17690.02 12.28レス/分 雑談系2 > ニュー速(嫌儲)
【コロナ検査】社会学者「なんで受けたがる?特効薬もないわけですし、検査結果がどうであれ、対応は変わらない」★21 (1001)
勢い 17590.86 12.22レス/分 ニュース > ニュース速報+
【速報】リーマン級ショック❗ついに来た NY株が1200ドル近い暴落、2008年10月以来の急落28日 ★4 (1001)
勢い 17497.82 12.15レス/分 ニュース > ニュース速報+
一斉休校はやりすぎ?賛否分かれる 岩田教授「なぜ学校?なぜ休校?根拠となるデータ?誰が進言?謎ばかり★3 (1001)
勢い 17431.20 12.11レス/分 ニュース > ニュース速報+
【感染予防】首相、企業に休暇取得の環境整備要請 (1001)
勢い 17422.84 12.10レス/分 ニュース > ニュース速報+
【新型コロナ】「トイレットペーパーが不足する」とのデマ情報がSNS上に 薬局では品薄・行列などの混乱も★7 (1001)
勢い 17394.75 12.08レス/分 ニュース > ニュース速報+
【速報】全国の公立小中高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★2 [367148406] [496411993] (1000)
勢い 17242.07 11.97レス/分 雑談系2 > ニュー速(嫌儲)
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★32 (1001)
勢い 17168.22 11.92レス/分 ニュース > ニュース速報+
【速報】北海道で新たに13人新型コロナウイルスに感染確認 10歳未満も2人 ★2 (1001)
勢い 16977.34 11.79レス/分 ニュース > ニュース速報+
広告
一斉休校はやりすぎ?賛否分かれる 岩田教授「なぜ学校?なぜ休校?根拠となるデータ?誰が進言?謎ばかり★9 (1001)
勢い 16919.32 11.75レス/分 ニュース > ニュース速報+
【速報】全国の公立小中高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★7 [873472195] (1001)
勢い 16826.15 11.68レス/分 雑談系2 > ニュー速(嫌儲)
ちょっと今の政権やばくね?お前らは次どこに投票するかもう決めたか? 【2020.2.27】 [466255231] (1001)
勢い 16687.85 11.59レス/分 雑談系2 > ニュー速(嫌儲)
月曜から全国の小中高校が休校wwwwwwwww (1001)
勢い 16617.38 11.54レス/分 雑談系2 > モ娘(狼)
経産省、マスクの転売や買いだめ自粛を呼び掛け 生産は通常の3倍 新型肺炎★2 (1003)
勢い 16571.60 11.51レス/分 ニュース > ニュース速報+
【コロナウィルス】新型コロナ「封じ込め」失敗…日本は間も無く“大不況”に襲われる 高リスク国・日本に誰が行くものか ★2 (1001)
勢い 16447.66 11.42レス/分 ニュース > ニュース速報+
大津いじめ自殺、賠償額を約10分の1の400万円に減額 高裁判決 (1001)
勢い 16429.57 11.41レス/分 ニュース > ニュース速報+
【サイエンス誌】日本のダイプリ対応は「大失敗」、感染者を増やす (1001)
勢い 16163.15 11.22レス/分 ニュース > ニュース速報+
【コロナ肺炎】キリン、1万人在宅勤務に ただし工場勤務を除く (939)
勢い 16062.09 11.15レス/分 ニュース > ニュース速報+
【コロナ】急に休校と言われても 仕事は、受験は…親たちショック ★5 (1001)
勢い 15861.25 11.01レス/分 ニュース > ニュース速報+
【絶望の安倍政権】安倍の急転直下の全国小中高休校要請は、政府内でも反対論続出!混乱は免れない模様 ★8 (1001)
勢い 15828.78 10.99レス/分 ニュース > ニュース速報+
【速報】全国の公立小中高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★5 [895711916] (1001)
勢い 15822.61 10.99レス/分 雑談系2 > ニュー速(嫌儲)
【速報】リーマン級ショック❗ついに来た NY株が1200ドル近い暴落、2008年10月以来の急落28日 ★3 (1001)
勢い 15787.09 10.96レス/分 ニュース > ニュース速報+
ディズニーランド明日から臨時休園へ (181)
勢い 15498.91 10.76レス/分 ニュース > ニュース速報+
【新型コロナ】「トイレットペーパーが不足する」とのデマ情報がSNS上に 薬局では品薄・行列などの混乱も★8 (1001)
勢い 15490.04 10.76レス/分 ニュース > ニュース速報+
【速報】リーマン級ショック❗ついに来た NY株が1200ドル近い暴落、2008年10月以来の急落28日 ★6 (1001)
勢い 15468.14 10.74レス/分 ニュース > ニュース速報+
【効いてる効いてる】官邸、ネット上の政府批判にイラついていた ★9 (1006)
勢い 15395.49 10.69レス/分 ニュース > ニュース速報+
【やってる感】安倍首相「私は(コロナ対策を)一生懸命やってる!」メディア「どういう対策を?」安倍首相「全力で取り組んでいる」 ★2 (1001)
勢い 15339.61 10.65レス/分 ニュース > ニュース速報+
武漢コロナ、犬にも感染すると発表。隔離者のペットから陽性反応。 [422186189] (565)
勢い 15288.44 10.62レス/分 雑談系2 > ニュー速(嫌儲)
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★24 (1001)
勢い 15032.97 10.44レス/分 ニュース > ニュース速報+
一斉休校はやりすぎ?賛否分かれる 岩田教授「なぜ学校?なぜ休校?根拠となるデータ?誰が進言?謎ばかり★6 (1001)
勢い 14904.54 10.35レス/分 ニュース > ニュース速報+
【東京マラソン】「大規模イベントに当たらない」 日本陸連、予定通り開催 (1001)
勢い 14857.92 10.32レス/分 ニュース > ニュース速報+
【新型コロナ】「トイレットペーパーが不足する」とのデマ情報がSNS上に 薬局では品薄・行列などの混乱も★10 (1001)
勢い 14840.24 10.31レス/分 ニュース > ニュース速報+
【やってる感】安倍首相「私は(コロナ対策を)一生懸命やってる!」メディア「どういう対策を?」安倍首相「全力で取り組んでいる」 ★6 (1001)
勢い 14647.08 10.17レス/分 ニュース > ニュース速報+
【国で払え】室井佑月、首相のイベント自粛要請に「違約金が発生する。どういうふうに国が補填すんの」★2 (1001)
勢い 14637.94 10.17レス/分 ニュース > ニュース速報+
【NYタイムズ】日本はコロナウイルスに対処できません。政府の対応は驚くほど無能。オリンピックを開催できますか? ★3 (1007)
勢い 14609.04 10.15レス/分 ニュース > ニュース速報+
【コロナ検査】社会学者「なんで受けたがる?特効薬もないわけですし、検査結果がどうであれ、対応は変わらない」★20 (1001)
勢い 14596.05 10.14レス/分 ニュース > ニュース速報+
【コロナ】急に休校と言われても 仕事は、受験は…親たちショック ★3 (1001)
勢い 14449.66 10.03レス/分 ニュース > ニュース速報+
トイレットペーパーとティッシュ売り切れでワロタ ジャップは何を理由に買い占めてるんだ… [439249206] (299)
勢い 14383.96 9.99レス/分 雑談系2 > ニュー速(嫌儲)
広告
萩生田文科大臣「休校の期間等については地域ごとに工夫してください」 [545512288] (957)
勢い 13541.57 9.40レス/分 雑談系2 > ニュー速(嫌儲)
【コロナウイルス】「共働きの家庭、子供の世話巡り大混乱だろう」…一斉休校に英紙 (1002)
勢い 13454.97 9.34レス/分 ニュース > ニュース速報+
【コロナ肺炎】安倍首相、経済界に有給休暇対応を要請 小中高校への休校要請を巡り保護者への支援で (948)
勢い 13348.63 9.27レス/分 ニュース > ニュース速報+
【しおちゃん あけおめー】ももいろクローバーZ潜入捜査官15627【フォーク村】 (1002)
勢い 12938.69 8.99レス/分 雑談系2 > モ娘(狼)
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★29 (1001)
勢い 12886.55 8.95レス/分 ニュース > ニュース速報+
【音楽】東京事変、自粛要請もライブ決行「拡大防止に最大限努めてまいります」 (1001)
勢い 12878.44 8.94レス/分 ニュース > 芸スポ速報+
【麻薬】紅白出場女性歌手Aが薬物で捜査線上に!沢尻や槇原超える衝撃 (1001)
勢い 12809.00 8.90レス/分 ニュース > 芸スポ速報+
【コロナ】前例のない何かとてつもなく大きなことが起こってると気付いた人が集まるスレ [209247155] (1001)
勢い 12716.57 8.83レス/分 雑談系2 > ニュー速(嫌儲)
【コロナ速報】韓国の感染者が2千人超える (883)
勢い 12662.44 8.79レス/分 ニュース > ニュース速報+
BTSの雑談スレ2412 (1001)
勢い 12584.70 8.74レス/分 ネット関係 > 難民
肴28822 (1001)
勢い 12562.33 8.72レス/分 ネット関係 > 難民
【悲報】安倍晋三さん「私はコロナ感染対策を一生懸命やっている!」 [632250434] (1001)
勢い 12547.56 8.71レス/分 雑談系2 > ニュー速(嫌儲)
【速報】全国の小中学校・高校に臨時休校要請へ 来週月曜日から 安倍首相が表明 ★31 (1020)
勢い 12514.76 8.69レス/分 ニュース > ニュース速報+
【麻薬】紅白出場女性歌手Aが薬物で捜査線上に!沢尻や槇原超える衝撃★2 (1001)
勢い 12468.01 8.66レス/分 ニュース > 芸スポ速報+
【悲報】安倍首相、全国のキッズから神として崇められる [875850925] (1001)
勢い 12453.47 8.65レス/分 雑談系2 > ニュー速(嫌儲)
【音楽】東京事変、自粛要請もライブ決行「拡大防止に最大限努めてまいります」★2 (1001)
勢い 12391.45 8.61レス/分 ニュース > 芸スポ速報+
【効いてる効いてる】官邸、ネット上の政府批判にイラついていた ★4 (1001)
勢い 12334.06 8.57レス/分 ニュース > ニュース速報+
【悲報】シングルマザーのまんさん達 安倍にガチギレ! 「明日から仕事どうすれば」「死ねってことか」 悲痛な声 [878419639] (1001)
勢い 12272.73 8.52レス/分 雑談系2 > ニュー速(嫌儲)
【新型コロナ】全国マスク工業会「官邸からは毎日強いプレッシャーがかかっているが、品薄解消の見通しは立たない」とこぼす (1001)
勢い 12093.06 8.40レス/分 ニュース > ニュース速報+
【新型ウイルス】アルコール消毒液、通常の2倍ペースで増産中…転売目的の買い占めで品薄に拍車 (1001)
勢い 12086.63 8.39レス/分 ニュース > ニュース速報+
【コロナ】急に休校と言われても 仕事は、受験は…親たちショック (1001)
勢い 12034.55 8.36レス/分 ニュース > ニュース速報+
【休校要請】#小池百合子東京都知事「もっと早く出してもよかった」 (1001)
勢い 12003.30 8.34レス/分 ニュース > ニュース速報+
国民 「安倍はグズ!」 安倍 「学校を休校にします」 国民 「急すぎだろ!」 ← どうすればいいの? [623653551] (1001)
勢い 11973.84 8.32レス/分 雑談系2 > ニュー速(嫌儲)
【東京五輪】「1年延期」に言及 新型コロナでIOCの最古参委員 ★2 (1001)
勢い 11959.67 8.31レス/分 ニュース > ニュース速報+
【速報】安倍晋三は臨時休校要請の具体的対応策の検討を今からやります
勢い 11896.34 8.26レス/分 雑談系2 > ニュー速(嫌儲)
【神奈川県】新型コロナウイルスの迅速検出法を開発 #黒岩知事「検査母数をはるかに増やさなければいけない局面」 (1001)
勢い 11659.00 8.10レス/分 ニュース > ニュース速報+
岡山県内39校で集団風邪 インフルか、患者は計981人 ★8 (1002)
勢い 11544.39 8.02レス/分 ニュース > ニュース速報+
一斉休校はやりすぎ?賛否分かれる 岩田教授「なぜ学校?なぜ休校?根拠となるデータ?誰が進言?謎ばかり★10 (350)
勢い 11415.63 7.93レス/分 ニュース > ニュース速報+
【マターリ】羽鳥慎一モーニングショー (817)
勢い 11405.53 7.92レス/分 実況ch > 番組ch(朝日)

カテゴリランキング

ページのトップへ戻る