[過去ログ] 関数型プログラミング言語Haskell Part32 (998レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(2): [ageteoff] 2019/01/29(火)09:05 ID:gJP/u7IJ(1/3) AAS
関数型プログラミング言語 Haskell について語るスレです。

haskell.org (公式サイト)
外部リンク:www.haskell.org
日本Haskellユーザーグループ
外部リンク:haskell.jp

前スレ
関数型プログラミング言語Haskell Part31
2chスレ:tech
872: 2019/12/20(金)11:16 ID:MYxSal4F(1) AAS
>>871
俺は「あぁ,Haskell でいうアレね」みたいな感じで学べた
厳密な感じが好きなら,気にいるんじゃないのかな
ドキュメントも揃っていて学びやすいと思う

ただ,俺はいまいち使い所を見いだせてない
Haskell で書ける分野なら Haskell で書いちゃうし
ちょっとしたツールとかサーバーサイドとかは Go のが楽だし

WebAssembly を生成するために使うのが
今一番,Rust の活きる分野な気がする
Rust は,クロスコンパイルが楽なので
省1
873: 2019/12/20(金)11:25 ID:mQBHONqp(1) AAS
>>871
ただのLisp方言やML方言はもう飽きたってことだろ
874: 2019/12/20(金)12:03 ID:tZwYgFV3(1) AAS
「C言語は純粋関数型」と言ってたのってQuoraの岡部健?
875: 2019/12/20(金)21:36 ID:/W4lQx2e(1) AAS
フロントをrustで書くとか一番馬鹿な選択だろ。話にならん。
876
(3): 2019/12/23(月)17:59 ID:/flai8cL(1/5) AAS
もしかしてParsecってあんまり使われてない?
Parsecのドキュメントが2001年とか古いのしか無くて、最初のサンプルコードすら通らない
ライブラリの使い方が解らなくていきなり躓いてる
877
(1): 2019/12/23(月)18:29 ID:B7hjQJ1Z(1) AAS
ここの住民、圏論とかの話だと玄人っぽいのにプログラミングの話になると初心者っぽくて謎
878: 2019/12/23(月)20:24 ID:E1rjr0pL(1) AAS
>>876
ドキュメントと言うのが何を指しているのか具体的なURLを示してくれないと、
何が原因でどう躓いているのか、助けようにも調べる取っ掛かりが無くて困る。

あと、本当にその古いドキュメントとやらしか学習資料は無いのか?
他にチュートリアルやブログなどは参考にならないのか?
879: 2019/12/23(月)20:56 ID:A/dzNHpI(1/2) AAS
どうせ躓くなら一番最初に躓く初心者っぽい奴の方が運が良い
ビギナーズラック

巨大なメモリを使う巨大なプロジェクトの完成直前に躓くのはかなり運が悪い
880
(1): 2019/12/23(月)21:51 ID:pH3djwe1(1/3) AAS
>>876
Parsec の開発は今や"メンテナンスモード"に入っていて、代わりに attoparsec や megaparsec が活発。
外部リンク[html]:haskell.e-bigmoon.com
881: 2019/12/23(月)21:58 ID:/flai8cL(2/5) AAS
ここ[parsec: Monadic parser combinators](外部リンク:hackage.haskell.orgに載ってる
これ[Parsec, a fast combinator parser](外部リンク:web.archive.orgです
他のは、ついでにParsecに触れているという感じで、詳しそうなのはこれしか見付けられませんでした

<続く>
882: 2019/12/23(月)21:59 ID:/flai8cL(3/5) AAS
最初のサンプルコードをGHCiで打ち込んで試そうとしてるんですが、

Prelude> module Main where
Prelude> import Parsec

<no location info>: error:
Could not find module ‘Parsec’
Perhaps you meant Parser (needs flag -package-key ghc-8.6.5)

モジュールが見つからないと言われます
最新バージョンの名前空間?と明らかに違っているので、
ここ[Text.Parsec](外部リンク:hackage.haskell.orgで、この二行

import Text.Parsec.Prim
省5
883: 2019/12/23(月)22:00 ID:/flai8cL(4/5) AAS
Prelude Text.Parsec.Prim Text.Parsec.Combinator> simple :: Parser Char

<interactive>: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

<interactive>:7:11: error:
? Expecting two more arguments to ‘Parsec Char’
Expected a type, but ‘Parsec Char’ has kind ‘* -> * -> *’
省14
884: 2019/12/23(月)22:04 ID:pH3djwe1(2/3) AAS
haskell ide engine って今どんな使用感?
そろそろ spacemacs haskell layer (中身 intero) から乗り換えようと思ってんだけど
未だにバージョン 1 未満なのが気になった。まだ待つべきかな。
885: 2019/12/23(月)22:05 ID:/flai8cL(5/5) AAS
>>880
おお、ありがとうございます
そっちでやってみます
886
(1): 2019/12/23(月)22:07 ID:wextYSDX(1) AAS
>>877
クヌースなんかもそんなもんだぞ。
プログラム理論と実装ガツガツやる能力は別物だから。
887: 2019/12/23(月)22:28 ID:pH3djwe1(3/3) AAS
>> 883
このエラーメッセージ
Not in scope: type constructor or class ‘Parser’
これは Parser が見つからないよ。みたいな意味

検索サイトのフーグルを「パッケージ指定」機能を使って探すと
外部リンク:hoogle.haskell.org
Parser は import Text.Parsec.String すれば使えるってことが解って、
同じように letter の場所も調べられる。

attoparsec や megaparsec にも似たやつあるっぽいから、何となくで読み替えていけばいいんじゃないかな。
888: 2019/12/23(月)23:28 ID:fuVSP632(1) AAS
>>886
> クヌースなんかもそんなもんだぞ。

Knuthはそんなことはないだろ
TeXもMetafontも最初のはKnuth自身が実装したのだから

> プログラム理論と実装ガツガツやる能力は別物だから。

圏論なんかの知識は実装と全く関係ないからね、そういう方面に明るいのと実装能力とは全く無関係だ
889
(1): 2019/12/23(月)23:34 ID:A/dzNHpI(2/2) AAS
KnuthやLinusって
圏論どころかカプセル化・継承・ポリモーフィズムすら使ってない印象がある
実装能力とは全く無関係だし
890: 2019/12/24(火)07:35 ID:nFH9kbNZ(1) AAS
>>889
は?
そんなの日本の組み込み現場の奴らの大多数と同レベルじゃん
891: 2019/12/24(火)08:12 ID:IDR7+yeu(1) AAS
何をもってknuthにスキルを疑うのか分からんのだけど、彼のプログラミングスキルが
ゴミクズな世界があったとしても、scratchから書く問題ならアルゴリズムだけで
他の人より速いもの書いてそう
892: 2019/12/24(火)16:43 ID:Y/zbyQKx(1) AAS
>>876
すごくタイムリーに reddit に似た質問が上がってるんだが偶然?
外部リンク:www.reddit.com
893: 2019/12/24(火)21:34 ID:4c9jV6+e(1) AAS
本人がtex書くまでこれほど大変と思ってなかったいうとるやん。
そのあとの文芸プログラミングとか、cのコード見てても、これあかんなとしか思わんわ。
894: 2019/12/27(金)22:57 ID:LIBStdaN(1) AAS
Getting started with Haskell
外部リンク:stackoverflow.com

外部リンク:stackoverflow.com
外部リンク:stackoverflow.com
外部リンク:stackoverflow.com
外部リンク:stackoverflow.com
外部リンク:stackoverflow.com
外部リンク:stackoverflow.com
外部リンク:stackoverflow.com
外部リンク:stackoverflow.com
省4
895: 2019/12/28(土)23:16 ID:wvWoDqVP(1) AAS
Haskellは小さいプログラムを作るには最適なんだけど
大きいプログラムになるとメモリ周りの最適化が困難なのよね
実行結果自体は正しいからテストすり抜けるだろうし
バックエンドで採用しても
本番環境で初めてメモリヤバイと気付いて死ぬ未来しか見えない
896: 2019/12/29(日)00:21 ID:J8aGFBX9(1/2) AAS
自家用ジェット機と大型旅客機みたいなイメージかな
897
(1): 2019/12/29(日)11:10 ID:09k8oxGS(1) AAS
死ぬことなく成功させた例
外部リンク:serokell.io
898
(2): 2019/12/29(日)13:22 ID:/UuMyPob(1) AAS
>>897
最初に上がってたsigmaの記事を発見したぞ
外部リンク:engineering.fb.com
なるほどHaskellを実運用するコツはGHCの魔改造から着手する事なのか
・・・って真似できるかーい!!
899
(1): 2019/12/29(日)15:18 ID:n6JnyT9E(1) AAS
>>898
ノリで採用したら地獄を見た感がヒシヒシと伝わってくる記事だね
その後facebookでHaskellを採用していない事実で察し
画像リンク[png]:livedoor.blogimg.jp
900: 2019/12/29(日)16:42 ID:ADVmDYvb(1) AAS
遅延評価を諦めて型システムとパターンマッチ系統だけを
よくわからないけどCとかC++辺りに持っていくじゃだめかな
901
(1): 2019/12/29(日)22:43 ID:J8aGFBX9(2/2) AAS
何を諦めたら最適解になるか?

これは愚問
902: 2019/12/30(月)01:49 ID:zGgGf8ov(1/2) AAS
赤黒木のコード読んでいたら
関数の定義に型情報があるけど
型推論で処理されるコード部分には型情報がない
目視で定義ーコード部を交互確認すると結構きつい

抽象化には貢献してるけど、人間が読み下すのは大変、オレはコンピュータじゃない(怒
そんな感じ
903: 2019/12/30(月)07:02 ID:gVSpb87m(1) AAS
そんなのエディタにやらせればいい
904
(1): 2019/12/30(月)09:12 ID:zGgGf8ov(2/2) AAS
要件定義が整っている関数の書き下ろしと
プログラムで記述されたコードの読み下しは難度が異なる
Haskellのコードは情報密度が高い事と抽象度の高さが強烈に効く
905
(1): 2019/12/30(月)09:50 ID:aMPpMkgz(1) AAS
Hakellだしコード読めば分かるだろ(コメントなし)
↓数カ月後
俺の書いたコードなのに意味が分からない・・・
906: 2019/12/30(月)10:41 ID:0IC+e4Ro(1) AAS
工学と名のついた無根拠な宗教が蔓延ってる言語よりは科学してるだけマシ
907: 2019/12/30(月)12:14 ID:WAqdspci(1) AAS
>>905
次の日とか
その日のうちでも
意味が分からなくなることがある
908: 2019/12/30(月)13:26 ID:khitn85K(1/2) AAS
赤黒木は左右対称のコードを2回書かされるから書きたくない
コードを読まなくても分かる
読む前から分かることをどれだけ知っているかが重要
読み始めてから努力するのは遅い
909
(1): 2019/12/30(月)16:27 ID:LA/Q6l88(1/2) AAS
>>899
>その後facebookでHaskellを採用していない

外部リンク:engineering.fb.com
910: 2019/12/30(月)20:14 ID:fOmQS2Mv(1) AAS
外部リンク:stackshare.io
911
(1): 2019/12/30(月)21:52 ID:rDj24KcK(1) AAS
>>909
よく読め、受賞は2019年だが
受賞内容は2009年の功績の話だぞ
そこで語られてる内容も2014年のGHC魔改造の件の話だし
5年も経過してるのに未だにその話しか出てこないって事はそういう事よ
912: 2019/12/30(月)22:25 ID:khitn85K(2/2) AAS
よく読んだら分かること
読まなくても分かること
普遍的な方を重視するのがいいと思うよ
913: 2019/12/30(月)23:48 ID:LA/Q6l88(2/2) AAS
>>911
枯れてきてるんじゃない?

外部リンク:github.com
914: 2019/12/31(火)00:12 ID:Lj+eqMzp(1/2) AAS
ちなみにFacebook自身は2015年の投稿で2年かけて
Sigmaの主要技術をHaskellに移行したといっている
外部リンク:engineering.fb.com

スライドもある
外部リンク[pdf]:multicore.doc.ic.ac.uk

そしてSigma の Software Engineering Manager の公募を最近LinkedInでかけていた
職位はManagerだし応募要件にはHaskellスキル必須とは記載していないようなので
Haskellが実用的に使われているっていう傍証にはならないけどプロジェクトは生きてる様子

またその後別の各技術にとってかわられたという情報もなさげ
915: 2019/12/31(火)01:50 ID:Lj+eqMzp(2/2) AAS
紹介済み?
外部リンク:serokell.io
916: 2019/12/31(火)02:29 ID:MpeDYErb(1) AAS
ナイス
917: 2019/12/31(火)23:30 ID:a+xjNkxx(1) AAS
>>898
haskellやってる奴が評価されるのはその手の最適化できることを見込まれてるからだぞ。
918
(1): 2020/01/01(水)04:13 ID:IaAF7ILo(1) AAS
Haskellを始めたばかりの者です
do構文は多用しても良いのですか?
手続き型を書いているような気分になります
関数型言語は初めてなので不安です
919: 2020/01/01(水)09:08 ID:msO/HyKq(1/3) AAS
>>918
いいよ。モナドは手続きを実現するのに役立つ抽象だよ。
でもアプリカティブで用が足りるならアプリカティブを使うべき。
IO モナドを do で合成するシーンが多いならリファクタリングの余地があるかも。
Control.Monad や Control.Applicative のユーティリティが利用できないか検討してみて
920
(1): 2020/01/01(水)09:16 ID:msO/HyKq(2/3) AAS
=>= 2020年の抱負 =>=

・珠玉本を再開したい。少なくとも二度目の四天王登場回までは行きたい
・Haskell でごはん食べる
921
(1): 2020/01/01(水)10:49 ID:1YmeR5a8(1) AAS
豊富なんてかいちゃって意識高い系かよwwwwww
922: 2020/01/01(水)11:24 ID:msO/HyKq(3/3) AAS
>>921 いいでしょw 新年なんだし
923: 【最底辺】 【25円】 2020/01/01(水)13:25 ID:tqBP4ADq(1) AAS
Haskellの未来
924: 2020/01/01(水)16:23 ID:0CkTsEaj(1) AAS
一般化が未来だと仮定すると未来は...
925
(1): 2020/01/02(木)06:03 ID:Ee9Lo0CG(1) AAS
>>920
海外にはRemote OKなところあるよ

A List of companies that use Haskell
外部リンク:github.com
926: 2020/01/02(木)07:13 ID:RghxuQ5t(1/2) AAS
OSS として良さげなツールを作って
Github Sponcers で支援を受ける
って方針を考えてる。どうかな
927: 2020/01/02(木)07:26 ID:RghxuQ5t(2/2) AAS
>>925
名古屋の時計販売店BIGMOONさん
外部リンク:www.e-bigmoon.com
外部リンク:haskell.e-bigmoon.comってお役立ちHaskell 情報がありがたいサイトやん。
中の人、時計屋さんだったのか…
928
(1): 2020/01/03(金)13:05 ID:EVicjzWY(1/5) AAS
Haskellは妙にテクニカルな部分が多い気がする
2変数関数fと1変数関数gを合成するときに
g . f
ではだめで
g .: f where (.:) = (.) (.) (.)
って書くのとか良く思いつくなって感じ
929
(1): 2020/01/03(金)13:32 ID:r+r/o5nr(1/3) AAS
>>928
それは、ポイントフリーで書いているからテクニカルに見えるたけで、
引数を明記すればビギナーにも理解できる式になるぞ。
やってみれば分かる。

他のもそうだ。
例えばライブラリの作者がポイントフリーで書いているのは、
その方がベテランの作者やコミュニティーにとって読みやすいからだ。
彼らもビギナーを相手に解説する際は、
自分達には多少洗練されていない様に見えても、
ビギナーにとっての読みやすさを優先する。
省1
930
(1): 2020/01/03(金)13:49 ID:EVicjzWY(2/5) AAS
>>929
(((.) (.) (.)) g f) a b
をパパっと
g (f a b)
に式変形できる自信が無い
931
(1): 2020/01/03(金)13:53 ID:biPe5Zol(1/4) AAS
g . f がだめな理由は型なので
fun<A, B> g;
fun<C, fun<D, A> > f;
このような型を宣言できる任意の言語に同じ問題がある
また、他の言語で問題が解決されたらHaskellでも解決できる
932
(1): 2020/01/03(金)14:08 ID:EVicjzWY(3/5) AAS
>>931
g :: b -> c
f :: a1 -> a2 -> b
に対して
(.) :: (b -> c) -> (a -> b) -> a -> c
の a を a1 -> a2 と解釈してくれれば話が速いんだけどね
a1 -> a2 -> b が実際には a1 -> (a2 -> b) で要は(->)が右結合だから駄目なのよね
933
(1): 2020/01/03(金)15:06 ID:r+r/o5nr(2/3) AAS
>>930
すまん、そういう話ではない。

「妙にテクニカルな部分が多い」と言うのは、
君の感じたhaskellの不満点や欠点なんだと俺は捉えたが、違うか?

2変数関数と1変数関数とを合成する関数(.:)の「型がまず先」にあって、

  (.:) :: (c -> d) -> (a -> b -> c) -> (a -> b -> -> d)

これを実装するのに
省8
934: 2020/01/03(金)15:11 ID:biPe5Zol(2/4) AAS
>>932
随伴の事か
935
(1): 2020/01/03(金)16:07 ID:EVicjzWY(4/5) AAS
>>933
Haskellに不満を持ってるとかではなくて単に凝った式に良く出会うというだけの話よ
そして凝った式を同値変形で分かりやすい式に変形するのが難しいことも多いと思う
個人的にはどう実装するかよりもどう同一視するかの方に興味がある
936
(1): 2020/01/03(金)16:22 ID:r+r/o5nr(3/3) AAS
>>935
そうだったのか、俺の完全な勘違いだった。
長文でレスの流れぶった切ってすまなかった。
937: 2020/01/03(金)16:34 ID:EVicjzWY(5/5) AAS
>>936
謝ることは無いよ
自分も言葉足らずだったし
興味深い話が聞けて良かった
938: 2020/01/03(金)18:40 ID:UgBOwnvC(1) AAS
凝った式を書ける俺ってイケてる!っていう中二病の文化なんでしょ
939: 2020/01/03(金)21:30 ID:biPe5Zol(3/4) AAS
また心理の話してる
メンタリストの文化なのかな
940: 2020/01/03(金)21:54 ID:jtHjGBI5(1) AAS
リストの1要素を書き換える関数が用意されてないのは、それが非推奨だからなの?
配列みたいな気分では使えないのかな
941: 2020/01/03(金)22:42 ID:biPe5Zol(4/4) AAS
IOが非推奨ではないから
まるでIOが非推奨であるかのような関数が用意されていない事に違和感はない
942: 2020/01/07(火)17:00 ID:xmklvGxc(1) AAS
書き換え・・・?
Haskellに書き換えという概念がそもそもあったっけ?
943: 2020/01/07(火)18:53 ID:KmM+4rGq(1) AAS
書き換えができるデータ型は定義できる
それを定義したモジュールにはその概念がある
そのモジュールと概念がHaskellの中にあるのか外にあるのかは知らん
944: 2020/01/19(日)01:06 ID:7oa0iQg0(1/2) AAS
すみません質問なんですが、

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)
省3
945
(1): 2020/01/19(日)01:34 ID:lT5Fy0hi(1/2) AAS
コレはダメ?

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 ID:lT5Fy0hi(2/2) AAS
間違った

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
(1): 2020/01/19(日)04:12 ID:E4qdczJe(1) AAS
import Data.List (inits)
948
(1): 2020/01/19(日)08:14 ID:to1IOlmG(1) AAS
Data.List.scanl1 (+) [5, 4, 8, 7] == [5, 9, 17, 24]
949: 2020/01/19(日)09:55 ID:JUDuINU+(1) AAS
やるじゃん
950: 2020/01/19(日)10:18 ID:6mEdluRX(1) AAS
>>947-948
おお、そんなのがあるのか。、
951: 2020/01/19(日)18:10 ID:7oa0iQg0(2/2) AAS
944です。返信が遅れてしまってすみません。
>>945.947-948 さん早速の返答ありがとうございました。
952: 2020/01/19(日)22:57 ID:JsYzYAKP(1) AAS
4.7. GHCi commands
外部リンク[html]:downloads.haskell.org

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 ID:TXkt06UM(1) AAS
Haskellの事を知れば知る程(圏論含む)、数学ってプログラミング言語だなと思う。
コンピュータが登場する遥か以前からあるプログラミング言語。
そうなると数学者はある種のプログラマーと言える。

ただ、数学はコンピュータに計算させるのではなく、自分で計算するから再帰みたいなループ構造は面倒臭い。
そこでループ構造を排除するアルゴリズム(法則や公式)を考え出して来たと考えられる節があって…。
そう考えると、コンピュータの登場で人間の効率的なアルゴリズムを考える能力が退化したかも知れん。
とか、考えてみたり。
954: 2020/01/20(月)13:04 ID:0GX6odYx(1) AAS
ΣとかΠは実質ループだが数学ではループしないで計算出来る
955: 2020/01/20(月)18:51 ID:9eVX0YAp(1/2) AAS
無理数や積分はほとんど計算してない
C++のtemplate実体化してないメタプログラミングと同じ
956: 2020/01/20(月)19:20 ID:h2nRkU1r(1) AAS
カリーハワード対応しらんのか?
957: 2020/01/20(月)19:35 ID:LcZgWv4y(1) AAS
普段のプログラミングでカリーハワード対応が出てくる場面ってどういうとき?
型レベルで凝ったことをするとプログラムを証明として書くことがあると思うんだけど、
その証明として書いたプログラムは実行するとどうなるの?
この辺少し勉強したいんだが書いたことも見たこともなくてさっぱり想像つかない
958: 2020/01/20(月)20:28 ID:9eVX0YAp(2/2) AAS
C++のデザインパターンとHaskellの代数的データ型の同型対応
959
(1): 2020/01/21(火)08:51 ID:lxIBo8y+(1) AAS
数式の末尾再帰なfib関数を見た時、手続き型言語で書く副作用バリバリのfib関数との共通点が見えた。
(過去どこかに本の中身の画像落としたんだが、まだあるかは知らん)

そこで一つの仮説が浮かんだ。
入出力を伴わない関数であれば、副作用のある関数でも正しく動く関数は数式と相互に変換出来るのでは?
(入出力も含めるなら、相互にHaskellと変換出来る?逆に、バグがあるなら相互変換は無理?)

数学専門じゃないから、証明とか出来ないけども。
960: 2020/01/21(火)09:00 ID:Hkcle0K4(1) AAS
人に伝える努力をして欲しい
ポエムいらない
961: 2020/01/21(火)11:28 ID:d/fzPC0C(1) AAS
何か知りたいことがあるのか?
需要がないところを努力するのは意味不明だし、努力して欲しいと言うのも意味不明
962: 2020/01/21(火)11:52 ID:m86EWX9f(1) AAS
数学だけだなく国語力もないのな
努力といわれてバカにされてることに気付かない
963: 2020/01/21(火)13:47 ID:L/RpGA77(1) AAS
ST で検索
964: 2020/01/21(火)17:55 ID:sFJRAv+Q(1) AAS
表示的意味論の話かな
965: 2020/02/04(火)12:34 ID:Np8xXmTj(1) AAS
数学、糞苦手な俺
プログラムで表現出来る数学分野ってごく一部だと思ってたけどそうでもないんか?

概念操作のプロセスと計算とじゃ大きな開きがあると思うんだが
それを鬼計算量で埋められるんかね
966
(1): 2020/02/04(火)13:19 ID:jKHkWlP0(1) AAS
オペレーションズリサーチって言った分野は数学必須だろうね
ベイズ統計とか当たり前のように使われているし
カルマンフィルタもそう

確率統計/多変量解析はコンピュータやる人間ならそれなりに必須だと思うし
現実世界に役立っている

ここでよく題材として挙がるのは圏論だけど これは俺も必要性はあんま感じない
967: 2020/02/04(火)18:06 ID:6o+cJy8H(1) AAS
>>959
手続き型言語でのwhileなどの繰り返しの一回に対し、そこで用いられている変数の値の変化を、末尾再帰関数の引数の変化に置き換えれば、きれいな1重whileは、きれいな末尾再帰関数に置き換わると主張しているんだよね。
968: 2020/02/04(火)20:02 ID:+caUnTFf(1) AAS
フリーハンドで描いた線と定規で描いた線を比較するようなもの
実質的な意味は同じ
強いて言うならマナーの良さが違うだけ
969: 2020/02/04(火)22:57 ID:LyYVEub6(1) AAS
静的単一代入形式に変換して、
φ関数の出てくるところを別関数の呼び出しに変換すれば、
副作用のない状態には持ち込めるかな
970
(4): 2020/02/05(水)18:14 ID:fFjiekZv(1) AAS
>>966
> ここでよく題材として挙がるのは圏論だけど これは俺も必要性はあんま感じない

プログラムを書く立場ならば圏論なんて知る必要は全くないよ

そもそも仮に圏論を知らないと良いプログラムが書けないプログラミング言語があったとしたら
そんなプログラミング言語は使い物にならない

Haskellerなど一部のプログラマの間での昨今の圏論ブームは少なくとも私には単なる一種のファッションの流行にしか見えないし余り意義を認めない
他人の趣味にケチをつける気はないので、やりたければどうぞ御自由に、としか言いようがない

圏論を知る必要があるとすればプログラムを書く人間ではなくて新しいプログラミング言語の設計をする人間(の一部)だ
省8
971
(1): 2020/02/05(水)18:19 ID:hXjs1EZI(1) AAS
>>970
>そもそも仮に圏論を知らないと良いプログラムが書けないプログラミング言語があったとしたら

CPL(Categorical Programming Language)
まずは Wikipedia を参照汁
972: 2020/02/05(水)19:04 ID:2rKdW1Ec(1) AAS
圏論って知らずに使ってるんやろ
それでええやん
973: ◆QZaw55cn4c 2020/02/05(水)20:36 ID:uTOW/8lH(1) AAS
圏論ってなんですか?
974: 2020/02/05(水)21:17 ID:2r8PGoiv(1) AAS
アジア文化圏
975: 2020/02/05(水)21:42 ID:/Jhw33Vx(1) AAS
一つ言えるのは圏論ってなんか語りたくなっちゃうものなんだということ。
プログラムにおいては全く意味はない。
計算機の動きを抽象化する道具としてそんな筋のいいものではない。
数論でも勉強するなら意味はあるだろうが。
976: 2020/02/05(水)23:38 ID:m+XqauaX(1) AAS
圏論はどちらかといえばポイントフリー
λとか∀とか∃とかパターンマッチとかで変数を束縛する言語
に違和感があれば圏論を語りたくなる
977
(3): 2020/02/06(木)01:01 ID:OGs/tKtL(1/4) AAS
>>970
大規模ソフトウェアのメンテにおいて、
圏論を知らないとこのように失敗するが、
知っているとこのように成功する、
という具体例を挙げられますか?

または、具体例を挙げて説明している本やブログ、
カンファレンスなどを紹介できますか?
978
(1): 2020/02/06(木)04:11 ID:7nZd7Xb0(1) AAS
>>977
圏論は、いわゆる「銀の弾丸」ではない
979: 2020/02/06(木)07:32 ID:OGs/tKtL(2/4) AAS
>>978
それは分かっています。

>>970 が圏論による成功例を知っているのなら教えてほしかったのです。

一件も挙げられず、ただ大規模ソフトウェアには大事だと言っているだけでしたら、
とても残念です。
980
(1): 2020/02/06(木)08:35 ID:7WdfZf7H(1) AAS
お前が圏論理解してかつ大規模ソフトウェア開発で失敗したら反証になるじゃん
がんばれ
981: 2020/02/06(木)11:02 ID:OGs/tKtL(3/4) AAS
>>980
この件に関して反証しても、大した意味はないと思います。

具体的な成功例を一つでも知ることの方が遥かに役立つのではないでしょうか。
982: 2020/02/06(木)11:23 ID:gLliKWEs(1) AAS
圏論だのモナドだの相変わらずだなあ
もっと楽しい話をしようぜ
コモナドとかProfunctor Opticsとかサ
983
(1): 2020/02/06(木)11:47 ID:sigCaOr9(1) AAS
横からだが
個人的に考えてる、と断ってるじゃん
単なる個人の感想
お前はそこに証拠を求めてる
何がしたいの?
984: 2020/02/06(木)12:12 ID:OGs/tKtL(4/4) AAS
>>983
個人的でもそう考える根拠が何かあると思います。
何かの記事でそう語っているのを見たとか、
自分が携わったプロジェクトで実感したとか。

記事なら出典を知りたいですし、
実感したのならもう少し具体的な話を聞きたいです。

と言うのも、今までもここで圏論を語る人はたくさんいましたが、
私の知る限り誰一人として役立った例を具体的に語った人はいませんでした。

>>970 は久しぶりに長文で熱く語っておられるので、
もしや具体例を挙げられるのではと思い聞いてみました。
985: 2020/02/06(木)13:45 ID:sNihMBVC(1) AAS
>>977
外部リンク[php]:kymst.net
986: 2020/02/06(木)22:21 ID:AbsWoeSu(1/3) AAS
>>971
そりゃ学位論文レベルの言語ならあるさ
そもそもそのCPLとCSL(Categorical Specification Language)とを定義した萩野達也氏のエジンバラ大学に提出した件の学位論文は私も読んだ
そして理論的には大変に興味深い研究だと思ったよ

だが私が前の投稿で書いた「使い物にならない」の定義、つまり肯定形の「使い物になる」はソフトウェア工学的な意味で実用になるという意味だ
つまりは「多数のプログラマによって実用プロジェクトで使える言語」という意味だ、より具体的な基準が必要だと言うのならば
「最低でも100万行のソフトウェア開発をそのプログラミング言語で行える」という意味だ

君が私の主張である「使い物にならない」を否定したければ、100万行とは言わぬまでもせめて10万行のソフトウェアを
複数人で開発するのにCPLだけでやってみてくれ、もちろん必要なCPLのライブラリ類は自分達で開発してね
987
(1): 2020/02/06(木)22:27 ID:sUAmWprm(1) AAS
簡単な判別法がある
デバイスドライバーが書けない言語は使い物にならない
988: 2020/02/06(木)22:27 ID:AbsWoeSu(2/3) AAS
>>977
だから能力として近いと言っているだけだよ
圏論という理論を勉強して理解できる能力と、大規模ソフトウェアを良い構造で設計する能力とはね
私がそう考えている理由は、どちらも抽象化や一般化といった思考の能力が重要だからだ

圏論を知らなければ良い設計が出来ないと言っている訳では決してない

970の最後の3行(空行はカウントしない)の意味するところは
勉強すれば圏論を理解できるようになる人は(抽象化や一般化の思考能力が高いので圏論を勉強していなくても)良い設計ができるだろう、という予想だ
989: 2020/02/06(木)23:07 ID:AbsWoeSu(3/3) AAS
>>987
> デバイスドライバーが書けない言語は使い物にならない

それは又一つ別の定義だね
私個人としてはアプリケーションしか書けないプログラミング言語でも「使い物になる」ことを認めるけれども
そういう定義をするソフトウェア技術者の立場はそれとして否定する気はない
990
(1): 2020/02/06(木)23:44 ID:r1DVX1M4(1) AAS
人間の社会の役に立つ勢力の定義が存在するのか?
まずは存在を疑うのが無駄な努力をしない秘訣
991: 2020/02/07(金)00:02 ID:sQmwkFjl(1) AAS
圏論が実用言語に向いてないのと同様に、989は5chに向いてない
992: 2020/02/07(金)00:15 ID:MJwijXd8(1) AAS
そんなことないでしょ
993: 2020/02/07(金)01:41 ID:Fnc0TnWe(1) AAS
オオオオチンポ
994: 2020/02/07(金)08:09 ID:ruz5n033(1) AAS
javascriptでデバイスドライバは書けないわな
圏論とやらが必要な分野で使えばいいだけの話
995: 2020/02/07(金)12:13 ID:PWhN+bN7(1) AAS
>>990
未知のウィルスに対する検疫等の防衛が出来るのも人間に役立つ能力
いまの役人の対応観てたらあほばっかりだと思うだろ
996: 2020/02/07(金)13:01 ID:3L88mYwi(1) AAS
まだ定義してないのにフライングできる奴は
定義が存在しないパターンを知ってるからそれができる
997: 2020/02/08(土)16:14 ID:pTX+YoHa(1) AAS
HListのインサートとかソートとかのやり方の実装が乗ってるホームページ教えて
作ろうとしても難しくてできないから
998: 2020/02/10(月)18:21 ID:gQeDR86I(1) AAS
次スレ
2chスレ:tech
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.204s*