関数型プログラミング言語Haskell Part30 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/01/15(日) 23:43:54.28ID:Vh4eztBk
関数型プログラミング言語 Haskell について語るスレです。

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

前スレ
関数型プログラミング言語Haskell Part28
http://echo.2ch.net/test/read.cgi/tech/1428597032/
2017/05/03(水) 23:04:12.27ID:1Ttf2z2u
Cabal ケバール
2017/05/03(水) 23:21:41.48ID:mJ/QVcTI
ghcよりcabalより先にstackを入れる。
372デフォルトの名無しさん
垢版 |
2017/05/04(木) 00:29:46.99ID:M/Hnicnq
YouTubeをhaskellで検索かけりゃいくらでも聞けるだろ
2017/05/04(木) 03:31:51.49ID:gAUNCpWB
haskellでキーボードから入力した値をそのまま出力する場合、必ず
n <- getLine
putStrLn n
のように一旦変数に束縛する必要がありますか?
一行では書けないのでしょうか
2017/05/04(木) 03:52:33.18ID:0GlJDnqX
main = getLine >>= putStrLn
2017/05/04(木) 03:55:26.58ID:gAUNCpWB
>>374
ありがとうございます
2017/05/04(木) 04:12:42.09ID:0GlJDnqX
ちなみに

main = do
____n <- getLine
____puStrLn n



main = getLine >>= \n -> putStrLn n



main = getLine >>= putStrLn

は、等価。
do形式はモナド形式を手続き型っぽく見せる糖衣構文に過ぎない。
最後のはモナド形式とカリー化を利用した部分的用で見た目の変数を無くしただけ。
モナド形式だとプログラム全体が一つの式だと言うのが良く分かる。
2017/05/04(木) 05:28:10.40ID:DGL+h71J
___n は誤解を招く

_korehaTsukaimasen
378デフォルトの名無しさん
垢版 |
2017/05/04(木) 06:57:02.33ID:M/Hnicnq
getLine >>= putStrLn じゃなくて interact はダメなん?
2017/05/04(木) 12:19:44.49ID:xtfIuMNG
そもそも、getLineは1行しか読まないしな
2017/05/04(木) 14:29:46.30ID:gUFA1lSr
>>378
interactは変数に束縛してごにょごにょする処理を隠蔽してるだけだから
「必ず一旦変数に束縛する必要がありますか?」の答えとしては若干嘘かも
2017/05/04(木) 16:34:00.03ID:UGR/WMPx
束縛ってコード(人間の視認性)レベルの話で、コンパイラが吐くバイナリではキャンセルされてるんじゃないの?
バインドで(ポイントフリーみたいに)やったのと変わらないようになってんじゃないの
2017/05/05(金) 21:55:20.21ID:9ig94Wv/
Haskell 教養としての関数型プログラミング 単行本 ? 2017/4/15
重城良国 (著)
https://www.amazon.co.jp/dp/4798048062/

824ページって超大作だな
Haskell本の決定版か?
2017/05/05(金) 21:56:45.82ID:9ig94Wv/
Haskellによる関数プログラミングの思考法 単行本 ? 2017/2/28
Richard Bird (著), 山下伸夫 (翻訳)

https://www.amazon.co.jp/dp/4048930532/

こっちはどうなのだろう?
感想求む
2017/05/05(金) 23:25:45.93ID:e6epJNrq
>>383
>>201

数独ができるようになるけど、ワイはすごい本の方が好きや
2017/05/05(金) 23:34:27.84ID:RNJ7gaAH
すごい本やない。
すごい「H」本や。
2017/05/05(金) 23:53:12.22ID:fZIf3DTG
初めてのCっぽくて好き
2017/05/06(土) 00:17:40.31ID:gZLP5YIG
getLineでコンソールから手動入力する時、バックスペースとかで修正出来ないのってhaskeline使う以外に何か方法無いのかな?
2017/05/06(土) 00:28:11.74ID:MHgXx5Es
rlwrapとか?
2017/05/06(土) 02:13:17.67ID:gZLP5YIG
うーん、そういうのじゃないな
2017/05/06(土) 18:51:05.79ID:smzwp1ku
Comonadでオブジェクト指向を実現できるって聞いたけどほんと?
2017/05/06(土) 23:14:55.28ID:6S4yhtdG
スレ違いかもしれませんが、2つのリストに一致する項目だけ抜き出したリストを作るみたいな問題があったとき、
集合論だと集合Aと集合Bの積集合A∩Bを求めるような解き方をすると思うのですが、Haskellのようにラムダ計算が
基になっている関数型言語だとそもそもの考え方や物の見方が違ったりするのでしょうか?

Haskellを学び始めたはいいんですが、結局他言語のパラダイムを無理やりHaskellに適用させているだけのような気がして不安です
392デフォルトの名無しさん
垢版 |
2017/05/07(日) 01:09:26.23ID:875uFfQS
>>391
質問に答えるだけの知識を持ち合わせていないので一応コードだけ

intersect :: Eq a => [a] -> [a] -> [a]
intersect xs = filter (`elem` xs)

リスト内包表現でも書けるけど関数型っぽいのはこういう書き方なのかも
2017/05/07(日) 01:46:15.37ID:s5HwRSgU
>>391
チューリング完全という意味で、他言語とHaskellは等価というのが数学的な見方だな
もし言語が複数存在する原因を知りたいなら、数学的な見方はほとんど役に立たないな
2017/05/07(日) 02:07:21.95ID:J1yK9zIW
>>392
>>393
ありがとうございます
チューリング完全でさえあればそれ以上は計算モデルより言語仕様に合わせた方が良さそうですね
いろいろ試してみて、一番スマートに書けるように精進します
今のところHaskellが一番面白いです
2017/05/07(日) 13:16:11.57ID:J1yK9zIW
>>392
ちなみに、mapやfilterとリスト内包表記は内部的にはここが違うとか、パフォーマンスが
違うとか、あるいはこういうときはこっちの方がいいとかはあるのでしょうか?
396デフォルトの名無しさん
垢版 |
2017/05/07(日) 16:32:45.84ID:YN83nmbH
リスト内包表記はconcatMapを使うからネストできる
[f x y | x <- xs, y <- ys, p x y]
== concatMap (\x -> concatMap (\y -> if p x y then [f x y] else []) ys) xs
パフォーマンスは実際にghcがどういうコードを吐くかだけど
そのままconcatMapでもmapやfilterと同じような最適化が行われるし
必要なければリストの結合も行われない
2017/05/07(日) 16:37:16.65ID:f0nSghKy
リスト内包のほうがパフォーマンスでるらしいけどHaskellのパフォーマンスチューンングは難しいから当分気にしないほうがいい
待ってる間に線形型で楽々チューニングできるようになるかもしれないし
2017/05/07(日) 16:58:43.74ID:3IJNEy2Z
>>396
>>397
ありがとうございます
ネストの有無などで自分なりに考えながら使ってみます
2017/05/07(日) 17:18:00.54ID:m17h7+4k
内包表記と再帰を組み合わせることも可能。
夢が広がりング。
2017/05/07(日) 22:35:33.72ID:t8zqh9+K
Web系でもいいのですが、フリーウェア(できればオープンソース)のアプリケーションで、
Haskellで作られたものって何かありますか?
Haskellプログラマだけでなく、一般の人も使っているもので。

もしくは、みなさんならHaskellでどんなアプリケーションを作ってみたいですか?
2017/05/07(日) 22:48:03.22ID:ESaiO+gS
Pandocあたりは比較的広く使われている印象
2017/05/07(日) 23:26:23.39ID:xgXJ2OQ8
あとはShellCheckだな。bash初心者はとにかくこれ使えって話題のシェルスクリプト更正ツールだ。
2017/05/08(月) 00:31:05.17ID:XyXCIute
オーケーグーグル
Haskellで日本語文字列(Shift-JISやEUC-JP)のファイルを正しく処理する方法
2017/05/08(月) 17:26:21.06ID:kaDHepSW
みんな夢がないね。
ぼくなんてHaskellプログラム一つでお城のような家が建てれたよ。
2017/05/08(月) 22:42:37.72ID:0FON9WNL
>>400です。
ありがとうございます。

Haskellで作られたアプリケーションの方は2、3個紹介されるかなと思ってましたので、
まぁ予想通りです。

ですが、作りたいアプリケーションのレスが1日経っても皆無なのは驚きました。
(>>403 がいまいち分からない。これは私へのレスですか?)

私は年賀状の宛名をデザインするWebアプリを作りたいと思い、
「Beginning Haskell」を読んでWebアプリの勉強中です。

皆さん、作りたいものは何もないんですか?
ゲームとかオーサリング系とか、マストドンをhackするツール(crackではなく)とか...
406デフォルトの名無しさん
垢版 |
2017/05/08(月) 22:56:09.94ID:9wTmIyqX
GitHubとかでHaskellで検索かけりゃ何か出てくるんじゃねーの?
407デフォルトの名無しさん
垢版 |
2017/05/08(月) 23:03:23.31ID:a/GZsbco
論理に基づく人工知能を作るならHaskellがぴったりじゃないかと思うんだけど、プログラミングの技能も論理学の知識もないから作れない

細々と勉強はしてるけど
2017/05/08(月) 23:31:16.69ID:Vtk8jBj4
自動イタ電器とか作れや
2017/05/08(月) 23:32:41.17ID:9whwcEDU
達人プログラマーになりたい欲求はあるけど何かを作りたいっていう欲求は薄いわ
2017/05/08(月) 23:43:37.38ID:iNFmh6sq
やはりゲームだな。あとはGUIアプリ。なにかのエディタのようなものがいいな。
Haskellで複雑な状態を扱うのは困難、と言ってる人らに反論したい。
実際のところはどうなのか想像する前に、まずはそういう状況に直面する必要がある。
2017/05/08(月) 23:49:55.75ID:iNFmh6sq
EmacsのプラグインもHaskellで書きたい。正格データと遅延データを色分けして表示できたら嬉しそうだ。
GHC API を使えばできるかもしれない。

なんにしてもHaskellでやりたい。俺はもうLispは嫌だ…
2017/05/08(月) 23:59:34.03ID:0FON9WNL
>>409
どういうことですか?
私が知っている達人プログラマ、要するにハッカーですが、
彼らはみな何かを作ってました(ます)。
なので、作ることに関心が無い達人プログラマというのが想像しにくいのですが。

あ、競技プログラミングのトッププレーヤーとかですか?
2017/05/09(火) 00:07:55.03ID:CfiI0NLl
>>411
Haskellでエディタ書いてくれ
common lispで書いたエディタもあることだし
414デフォルトの名無しさん
垢版 |
2017/05/09(火) 00:12:52.22ID:PrpfKmLN
作る以外に改造とかに気合入れる人とかもいるんじゃね?
2017/05/09(火) 00:50:22.97ID:j9MX7/aM
>>413
今は外部言語でかけるしくみがあるから、エディタそのものを置き換えなくてもいいんだ。
それが現実的だと思う。Emacsのような巨大なものは厳しい。見上げるだけで首が疲れるよ。先人は偉大だね。
2017/05/09(火) 10:12:37.98ID:jmx2rYXI
>>400
写真が趣味だから、Jpegのカラー画像をモノクロやセピアに変換するツール作りたくてHackage漁ったら使い易そうなのがCライブラリ使ってるんで、そう言うの入れやすいLinux導入。
暇があったらチマチマ作りたいけど、暇がない。。。
2017/05/09(火) 11:12:04.61ID:TCAyfaNB
itchynyタソがcamを作った時、一部の画像ファイルが(ライブラリのせいで)読めないのに腹を立てて
だったらhaskellで書いてやると一念発起したのがcamh。いまでも活躍してます。
lesspipeに組み込むとか。ちなこれはimlib2を使ってるので大抵の画像は読める。
418デフォルトの名無しさん
垢版 |
2017/05/09(火) 22:12:03.59ID:PrpfKmLN
haskellを業務でつかうような仕事に転職すればOK
2017/05/09(火) 22:21:49.15ID:kDNeTnk7
仕事では使わんが、概念というかエッセンスはめっちゃ役に立ってるな
興味本位で触っといて良かったとマジ思う
2017/05/09(火) 22:47:25.87ID:1T1N541v
>>419
その手の話ここで時々聞くけど、Haskellの何が何にどう役だったのか、
具体的な話を聞いたことが一度もない。
$$$な状況でHaskell未経験のヤツは***だったけど、経験者の俺は###できた、とか。

そういう事を具体的に語ったブログとか無いんかな?
英語でも構わないんだけど。
2017/05/09(火) 23:13:21.51ID:0m9lmeXL
比較するなら同一のものに対して、Haskell でのアプローチと
その他のアプローチをする必要があるので、
そんな贅沢な時間の使い方するやつはユーザ数が多くないと現れないんじゃないかな?
422デフォルトの名無しさん
垢版 |
2017/05/09(火) 23:21:27.66ID:PrpfKmLN
tanakhにhaskellやっててよかった話を要求するか
2017/05/09(火) 23:24:21.68ID:xmCSMJsq
C++やC99以降みたいな「どこでも変数宣言」を嫌うようになった
宣言した位置と使う位置が離れるのは書き方が悪いからだ、というかなんか
2017/05/10(水) 00:12:52.35ID:HNykyFkL
高階関数を多用する様になったとか、関数の純粋さを気にして関数分割する様になったとか
設計やコードが以前より分かりやすくなってテストもしやすくなったと思う
カリー化や部分適用がもっと簡単に出来たらってモヤモヤする事も多いけど
2017/05/10(水) 02:17:13.25ID:k+Fw34TB
別に関数型プログラミングって今まで出来なかったことが出来るようになる手法じゃないしな
コードを直感的に書けるようにすることでプログラムの全体的な質を高める手助けをしてくれるような感じ
メリットを語れと言われたら一晩中でも絡めちゃ語れる
2017/05/10(水) 07:52:30.59ID:JBi0Fo4L
関数型とは月極、定礎に匹敵する巨大グループだがそれが存在する証拠はない
統計学的には母集団が実在する証拠を出す義務はない
2017/05/10(水) 18:59:47.60ID:oW0tCmUv
私は、Windowsで大きなランタイムとか必要なく
実行形式のバイナリを作れるのが助かってる。
小さいバッチプログラムとか。
2017/05/11(木) 05:52:26.63ID:0s1wVfC9
ghcmod-vimってstack環境で動かないのな
429デフォルトの名無しさん
垢版 |
2017/05/12(金) 14:16:42.66ID:jiodGJOF
haskelは使わないけど関数型の勉強はすごいためになる
ライブラリが提供する地雷メソッド見抜けるようになった
2017/05/12(金) 20:57:00.05ID:nS2W/WX/
意識的にオブジェクトをモノイドにしたりするようになった
2017/05/12(金) 21:47:41.07ID:YH3Rdz9Y
皆の言う関数型の経験が生きた事をアドバイスしてるオブジェクト指向の本が出ないのは何故か
432デフォルトの名無しさん
垢版 |
2017/05/12(金) 22:37:15.98ID:ZlSd19FP
本を書くのが楽な作業だとでも思ってるの?
2017/05/12(金) 22:41:48.24ID:QfK6Pl49
その内容で一冊書きたいならそれをテーマにした小説にしてページを埋めないとだな
いいものはみんな本になるはずという前提がそもそも間違ってる
2017/05/12(金) 22:48:49.78ID:YH3Rdz9Y
>>432
楽かどうかの話じゃなくて、皆の言ってる事はここ数年の関数型の特長じゃないじゃん
ずいぶん昔から変わらない関数型の特長でしょ

関数型のいいところを手続き型(オブジェクト指向)にも取り入れようとし出したのもかなり昔の話だし

なのに、ここ数日このスレで挙げられた事が本になっていないのが不思議なんだよ
和書はともかく洋書でも無いじゃん
2017/05/13(土) 00:09:37.73ID:7Z9U0QOC
ハスケル環境整えやすいのって
2017/05/13(土) 00:10:00.54ID:7Z9U0QOC
Windows debian?
2017/05/13(土) 00:14:42.17ID:hYOIVOdy
>>431
うーん。。。
関数型言語じゃなくても気を付ければ出来るし、それがデザパタとかMVC/MVVMになってるからじゃないかな。
だから関数型言語はエッセンスを触接理解するのに使って、実用は普通の言語。
特にHaskellはIOと純粋関数が分かれてるからコマンドアプリでさえファイル=M、コマンドアプリ=VM、コンソール(ターミナル)や出力するGUI部品=Vって非常に明確。
使ってて、ああ、MVVMってこう言うことかって思った。
何つーか、MVCよりもMVVMはもっとCを広く解釈してるからVMなんだなぁとか。
2017/05/13(土) 00:22:55.11ID:7Z9U0QOC
C++でわからんでJAVAで半分誤解して
ruby使ったときにオブジェクト指向理解したのとよく似てるな
2017/05/13(土) 00:27:18.79ID:hYOIVOdy
経験上思ったのはオブジェクト指向は先手先手で先を読んだ設計が重要。
(だからオブジェクト指向設計とかがプログラミング以外にも必要)

関数型言語はわりと行き当たりばったりでもどうにかなるし、それはオブジェクト指向じゃない普通の言語(CとかPascal)でも活かせる。

だから、メソッドチェーン使った宣言的なオブジェクト指向よりも泥臭い手続き的なプログラミングに新たな視点(設計の幅)を与えてくれる感じ。
(要するにメソッドの中身を書くときに役立つ)
2017/05/13(土) 00:33:36.39ID:qMDptb/r
OOPはプロパティの値を書き換えてなんぼ、インスタンスの振る舞いをメソッド内で完結させて
なんぼだからまぁそりゃメソッド内くらいにしか関数型のパラダイムは取り入れられないよね
2017/05/13(土) 00:50:28.11ID:7Z9U0QOC
>>439
プログラム組む前に紙と鉛筆でじっくり図書いたことないかえ?
ライブラリ使うだけの時も恐怖でそうしてた。
2017/05/13(土) 01:35:42.34ID:tHJGZUH8
>>431
二つ以上の言語を使いこなす事をアドバイスしてる本ならあるよな
例えばシェルスクリプトとC言語の二つ
ここらへんではオブジェクト指向は必要ないし
2017/05/13(土) 11:47:21.81ID:LpfjHhl9
>>436
stack使うならどっちでも楽じゃない?
2017/05/13(土) 15:11:20.18ID:7Z9U0QOC
>>442
ほとんど知識のないまっさらの状態
ならそうだけど、
Cは覚えること山ほどあるぞ
2017/05/13(土) 17:01:20.26ID:GwlKz+MG
シェルはCのmain関数を呼び出すだけだからよかった
なぜmainではない任意の関数を呼び出す必要がないのか

なぜHaskellはCの任意の関数を呼び出すのか
答えを暗記する前によく考えてみれば、覚えることが減るんじゃないか
2017/05/13(土) 17:27:12.08ID:1EsAZpPG
Cよりjavaの方が覚えること多いよ
2017/05/13(土) 22:08:08.69ID:GC0/nJum
>>440
うーん。。。
上手く説明しきれてないな。。。
メソッドの中身書いてる時、手続き的なコード書く事多いけど、
設計変更の際に手続き的なコードだと破綻して新たにクラスを作ってオブジェクト指向的なコードに変える事があるんだけど、Haskell視点が入る事で一見破綻したコードでも、何とか破綻させずに改修できる目処が立つ事が増えた。

何つーか、手続き的なコードからオブジェクト指向的なコードへの切り替えを遅らせる。
手続き的なコードを延命する事が出来るようになったって感じかな。
2017/05/13(土) 22:42:27.32ID:Xpw0Rhcm
>>446
Cはコンパイラというかリンカのオプションが多い
JITコンパイラは覚えることが少ない
2017/05/13(土) 22:59:11.16ID:qMDptb/r
Javaはデザパタも覚えなきゃ話にならんから…
2017/05/13(土) 23:34:24.50ID:ZYwAYCy+
Haskellは初めからデザパタを、それと気づかないまま強制されているような窮屈さを感じる
2017/05/13(土) 23:36:04.40ID:GC0/nJum
それが仕事に活きるとも言える。
2017/05/14(日) 06:27:15.50ID:dFKyOZwr
代数的データは単なるVisitorパターンではなく遅延評価にも関係がある
だが同時に、型クラスで抽象化しろ、具体的な代数的データを教えるなというのがやばい
2017/05/14(日) 14:24:30.77ID:pHcsRThm
ポイントフリースタイルにこだわった方がHaskellっぽいですか?
flip関数まで使い出すと非常に混乱するのですが…
2017/05/14(日) 15:12:47.10ID:9JtdGcan
>>453
その考え方は本末転倒だと俺は思うよ。
プログラムコードで大事なのは関数型っぽいとか手続き型っぽいとかじゃなく、
プログラマ(自分)が読みやすい、意味が理解しやすいかどうかだよ。

Haskell を使うんだから関数型に合ったアルゴリズムはこだわるべきだけど、
その実装方法、つまり書き方は自分が読んで分かるように書こう。
そんな事はないだろうが、くれぐれもカッコイイとかで流されないように。

ただ、他人のコードは読めるようになった方が良いから、
そういう意味では多少トリッキーなポイントフリーにも慣れておいた方が良いかもね。
2017/05/14(日) 15:23:34.69ID:pHcsRThm
>>454
ありがとうございます
アルゴリズムを気にしながらもまずは自分と他人が読みやすいように書いていきます
2017/05/14(日) 16:43:02.99ID:uk0JawvS
プロっぽいコード書いて収入上げる
2017/05/14(日) 16:43:13.34ID:p/Ra2wac
ポイントフリーはこれが本質的な処理だ!おれは本質的なことだけ書くぜ!というカッコ良さがあるからな
珠玉のアルゴリズムとか読むと、つい憧れてしまう

しかしflipを使いまくって解読不能にするのは本末転倒
458デフォルトの名無しさん
垢版 |
2017/05/14(日) 18:19:44.55ID:lQnp4gVk
flipの呼び出しコストって無視できるの?
2017/05/14(日) 18:24:38.81ID:I4CZOOoh
uncurryなんかもカッコいいなぁ (かなり使った
ただポイントフリーは、一度くっつけたのをまたバラす時に頭が痛くなる
一種の(視覚的な)最適化なので、頻繁に組み替えてる最中にはやりたくない
2017/05/14(日) 19:03:34.66ID:X8FkgiaC
>>458
最適化でインライン展開されるんじゃない?
2017/05/15(月) 00:57:14.99ID:ICbTDVni
ポイフリしたら型シグネチャ添えてる。本末転倒かね?
2017/05/15(月) 06:58:21.61ID:3pbiASso
>>461
それを本末転倒かもと考える事が本末転倒だよ。
大事にするところがおかしい。
コードスタイルを決めるのは何にもまして読みやすいか、考えやすいかどうかだよ。
(もちろん誰が読む、考える人かによる)

型シグネチャを添えるかどうかは本質的にはポイントフリーしたかどうかに関係ない。

・そもそも添えないと(意図したように)コンパイルできないから添える。
・添えた方がコードを読みやすい or 考えやすいから添える。
・添えない方がコードが読みやすい or 考えやすいから添えない。

これ以外の理由ってある?
(書籍に載せるのに紙面を節約するため、という理由は排除)

ちなみに俺個人は、添えた方が読みやすいし考えやすい。
どんな関数でも本体を定義する「前」に型シグネチャを書く(と言うか思い浮かべる)。
OOPにおけるインターフェース志向設計みたいなもの。
2017/05/15(月) 08:50:26.75ID:fFRu606n
いやおかしくないでしょ。
ポイントワイズなコード にするか、型シグネチャ付けるかは悩んでもいいでしょ。

コードは短い方が読みやすい。冗長でない方が読みやすい。
しかし一時変数や型注釈は別のレベルでの理解しやすさを与えてくれる。
それらを使うか、使うならどっちか、両方か、はケースバイケースだし職人芸的な深みがあると思うよ。
場合によっては関数名の類似だけで事足りることとかあるでしょう。

個人的なバランス感覚としては、なるべくポイフリするがflipは使わない、トップレベルの型シグネチャはほぼ付ける、ただし書き捨てコードは別。
(ルークよ、セクションを使え…)
2017/05/15(月) 09:43:58.61ID:WwceF0p9
使い捨てやモナドの途中でletした関数も漏れなく型シグネチャ付けるの?
2017/05/15(月) 10:00:25.10ID:3pbiASso
>>464
俺(>>462)に言ってるのかな。

俺は内部関数にはシグネチャーは基本的に書かない。
(内部関数自体、ほとんど使わないけど)
ごめん、どんな関数でもと言ったのは、トッブレベル関数のことだ。

あと、今のコーディングスタイルにしてからは、
Haskellでいわゆる使い捨てコードというものを書かないようになった。
466463
垢版 |
2017/05/15(月) 11:04:15.21ID:fFRu606n
>>464
俺は書くときもある。でもそういう時は大抵、設計を練り直すハメになる。
なるべく上の層を充実させたいよね。

>>465
使い捨てコード書かないのは、どうなんだ。
ちょっとした実験というかお遊び的プログラミング、粘土コネコネはしないのかい。
いやでも、作っても結局設計しっかりしてないと長持ちしないなら、初めから気合い入れて製作すべきなのか。
その方がトータルのコストは節約できるということか。ううむ。
2017/05/15(月) 11:55:36.63ID:3pbiASso
>>466
実験は基本的にちょっとしたものでも捨てない。
結果的に後で捨てることになるかもしれんが、
捨てるつもりで実験はしない。
実験の目的や結果などをメモって残しておく。

実験の時も本番の時も思考の順は同じだから、まず型から考える。
だからシグネチャは書く。

お遊びは、ごめん、その状況がよく分からん。
コードを書くことを遊びにできる心は、揶揄でも何でもなく素直に感心する。
羨ましい。

粘土は要するに実験と同じだよね。
だからシグネチャは書くよ。
2017/05/15(月) 12:23:22.28ID:19VlPgPR
入門者のおれには勉強になる。
Stateとか使って型推論させると、MonadState使ったかなり複雑なシグネチャが出てくるんだけど、
あれはなるべく汎用的なシグネチャにしておくのがいいのかな?それとも具体的なシグネチャにするほうがいい?
2017/05/15(月) 12:29:59.58ID:Nyf5aX+C
>>465の言ってる「使い捨てコード」は単に無名関数くらいの意味合いじゃない?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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