17/01/15 23:46:14.19 Vh4eztBk.net
過去スレ一覧
28) スレリンク(tech板)
27) スレリンク(tech板)
26) スレリンク(tech板)
25) スレリンク(tech板)
24) スレリンク(tech板)
23) スレリンク(tech板)
22) スレリンク(tech板)
21) スレリンク(tech板)
3:デフォルトの名無しさん
17/01/15 23:46:30.44 Vh4eztBk.net
20) スレリンク(tech板)
19) スレリンク(tech板)
18) スレリンク(tech板)
17) スレリンク(tech板)
16) スレリンク(tech板)
15) スレリンク(tech板)
14) スレリンク(tech板)
13) スレリンク(tech板)
12) スレリンク(tech板)
11) スレリンク(tech板)
10) スレリンク(tech板)
09) スレリンク(tech板)
08) スレリンク(tech板)
07) スレリンク(tech板)
06) スレリンク(tech板)
05) スレリンク(tech板)
04) スレリンク(tech板)
03) スレリンク(tech板)
02) スレリンク(tech板)
01) URLリンク(pc.2ch.net)
4:関連サイト
17/01/15 23:47:46.51 Vh4eztBk.net
(英語)
Haskell - Wikibooks, open books for an open world (ページ内に内容をまとめたPDFあり)
URLリンク(en.wikibooks.org)
Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版)
URLリンク(learnyouahaskell.com)
Real World Haskell (同名書籍の無料オンライン版)
URLリンク(book.realworldhaskell.org)
(以下、日本語)
Haskell入門 5ステップ - HaskellWiki (公式サイト内、日本語入門セクション)
URLリンク(wiki.haskell.org)
Haskell - Wikibooks (上記Wikibooksの同タイトル日本語版。多くの項目が未編集)
URLリンク(ja.wikibooks.org)
Programming in Haskell
URLリンク(www.sampou.org)
Haskell のお勉強
URLリンク(www.shido.info)
Haskell Programming
URLリンク(www.geocities.jp)
本物のプログラマはHaskellを使う:ITpro
URLリンク(itpro.nikkeibp.co.jp)
[入門]関数プログラミング―質の高いコードをすばやく直感的に書ける!
URLリンク(gihyo.jp)
5:デフォルトの名無しさん
17/01/16 07:56:53.70 fQO7vc6n.net
乙
6:デフォルトの名無しさん
17/01/16 15:43:59.55 WQ/ved8Z.net
Wikipediaの人工知能に適した言語のリストにHaskellがあったけど、やはり最近流行りの統計的なアプローチがされているのかな
LogicTモナドが使えるらしいけどよく分からない
7:デフォルトの名無しさん
17/01/16 19:31:44.98 FYjqZVjV.net
適しているという話は聞いても
使われているという話を聞いた事はない不思議
8:デフォルトの名無しさん
17/01/16 19:44:49.27 MHdfZn+y.net
>>7
村主さんが開発したFormura(Formulaではない)というプログラムを自動生成するプログラミング言語があるみたい
人工知能ではないけど似たものを感じる
9:デフォルトの名無しさん
17/01/16 20:10:23.15 cwyxJ1cI.net
ディープラーニングはほぼ完全にPythonに食われちゃった
10:デフォルトの名無しさん
17/01/16 21:52:49.11 e08JNJ9T.net
前スレで質問しようとして何か変な風に失敗してしまいました...
再掲させてください
----
aojの問題でわからないところがあるので質問します.
URLリンク(judge.u-aizu.ac.jp)
二股にわかれた容器に1から10まで番号のついたボールを番号の大小関係の制約を守って並べていけるかを判定する問題なんですが,自分のコードを提出するとruntime errorになってしまいます.
理由も考えたんですがよくわからないので,何がダメなのかアドバイスをお願いしたいです.
main :: IO ()
main = getContents >>= mapM_ (putStrLn . (\arr -> solve (tail arr) 0 (head arr, 0)) . map (read :: String -> Int) . words) . tail . lines
solve :: [Int] -> Int -> (Int, Int) -> String
solve arr index (box1, box2)
| index == length arr = "YES"
| otherwise =
if box1 < box2 then
solve arr index (box2, box1)
else
if arr !! index > box1 then
solve arr (index + 1) (arr !! index, box2)
else
if arr !! index > box2 then
solve arr (index + 1) (box1, arr !! index)
else
"NO"
11:デフォルトの名無しさん
17/01/16 23:17:40.44 7uYw7kg2.net
競技プログラミングにハマるプログラマのスレ 8
スレリンク(prog板)l50
12:デフォルトの名無しさん
17/01/16 23:44:35.96 YUCFPIN/.net
まあHaskellの質問だとHaskellスレで聞かないとスルーされるから
回答してあげるのが優しさってもんよ。
13:デフォルトの名無しさん
17/01/17 00:17:06.16 BMtHP56w.net
優しい回答例
エラーの原因を探し出しその場所をピンポイントで変更してあげる
優しくない回答例
面倒だから変更できそうな場所は必要あろうがなかろうが全部変更してみろ
14:デフォルトの名無しさん
17/01/17 00:47:05.23 gDgxXQqt.net
>>10
URLリンク(judge.u-aizu.ac.jp)
haskell回答は3人しかいないな
15:デフォルトの名無しさん
17/01/17 01:19:14.78 +KcFvgyU.net
if arr !! index > box1 then
solve arr (index + 1) (arr !! index, box2)
else
の部分では、box1>box2 なのでどちらの分岐も考えられる
出力の型をBoolに変更し
if arr !! index > box1 then
solve arr (index + 1) (arr !! index, box2) || solve arr (index + 1) (arr !! index, box2)
else
でどうでしょう。で後からTrue,FalseをYES,NOに変えればOK 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
16:デフォルトの名無しさん
17/01/17 01:20:40.28 +KcFvgyU.net
訂正
if arr !! index > box1 then
solve arr (index + 1) (arr !! index,box2) || solve arr (index + 1) (box1,arr !! index)
else
17:デフォルトの名無しさん
17/01/17 01:35:04.21 9da45IOD.net
>>15
勘違い。これは原因ではないので無視してください
18:デフォルトの名無しさん
17/01/17 01:48:42.05 gNSY+qrn.net
皆さん
反応ありがとうございます.
Haskellは周りに聞ける人がいなかったので助かります
19:デフォルトの名無しさん
17/01/17 13:27:32.57 KBo6p4cv.net
Haskellで競プロは隔靴掻痒という感想
実行制限時間がC++を前提に設定されてるから辛い
しかも Haskell 提出者が少なすぎて、AC 解答を覗いて速いコードを書く知見を獲るということができない
強い Haskeller 先輩各位は競プロサイトにアカウントを作って(競技には参戦しなくてもいいから)暇なときに過去問で誰も Haskell による AC が出てないものを適当に AC していって知見をバラまいてリードしてほしい
20:デフォルトの名無しさん
17/01/17 17:07:58.89 upTI+ygx.net
>>10 の問題は実際のアプリ作りのどういうシーンに応用できるの?
21:デフォルトの名無しさん
17/01/17 18:24:57.23 BMtHP56w.net
アプリの有用性ではなく難易度を研究してるんだろう
例えば人工知能が完成したらどれだけ役に立つかではなく
実際に完成する確率は何パーセントくらいかに興味がある
22:デフォルトの名無しさん
17/01/17 20:38:31.88 +KcFvgyU.net
頓珍漢な質問かもしれませんが
ghciの:sprintでその時点での式の評価の深さを知ることができると思うんですが
評価の深さ自体を扱うプログラムを組むことってできるのでしょうか
23:デフォルトの名無しさん
17/01/17 21:11:08.46 yOV+pApV.net
>>22
評価の深さって何?
浅い評価と深い評価の例を挙げてみてくれないか。
評価の深さ自体を扱うって、具体的には何がしたいの?
特に何かしたい訳じゃなければ、どういうプログラムを想定しているか、
に置き換えてもいいんたが、とにかく何か具体例がないと、
何を言っているのか分からん。
24:デフォルトの名無しさん
17/01/17 22:10:59.79 +KcFvgyU.net
>>23
考えなしに深さという言葉を使ってしまいました
リストの評価についてです
Prelude> let xs = map (*2) [1..5]
Prelude> :sprint xs
xs = _
Prelude> xs `seq` ()
()
Prelude> :sprint xs
xs = _ : _
Prelude> length xs
5
Prelude> :sprint xs
xs = [_,_,_,_,_]
Prelude> xs !! 2
6
Prelude> :sprint xs
xs = [_,_,6,_,_]
Prelude> xs
[2,4,6,8,10]
Prelude> :sprint xs
xs = [2,4,6,8,10]
といったようになりますが
ある時点の評価について二つのリストが同じになる可能性があればTrue、なければFalseを出力するようなことをしたいと思っています。
例として、[_,_]と[_,_]や、_と[_,_]、_:_と[_,_]、[1,_]と[_,2]などはTrue。
[_,_,_]と[_,_]、[_,1]と[_,2]などはFalseになると言った感じです。
似たようなことがスマートにできる方法があれば教えて頂きたいです。
25:デフォルトの名無しさん
17/01/17 22:52:03.18 yOV+pApV.net
>>24
ghc-heap-viewとかのghcハック関係のライブラリや、それらのソースをあさってみてはどうだろう。
俺も調べてみて初めて知ったが、ghc-visって面白そうだな。
26:デフォルトの名無しさん
17/01/17 23:13:22.52 +KcFvgyU.net
>>25
ありがとうございます!
その辺りを勉強してみます。
27:デフォルトの名無しさん
17/01/20 20:35:21.61 UH4PToPO.net
すごいとプログラミングの2冊よんだけど次どうすりゃいいの
本殆ど無いし
28:デフォルトの名無しさん
17/01/20 21:07:25.07 NJo0QCWa.net
好きなもの作ればいいと思うよ
29:デフォルトの名無しさん
17/01/20 21:27:38.70 F6U1j3oz.net
俺は静的型付けをゴリ押しされたのでHaskellをやってみたけど次はC++かな
静的型付けの本がないならHaskellとC++の本を読む
30:デフォルトの名無しさん
17/01/20 23:07:09.10 Mei5GLPp.net
>>27
CUIの家計簿アプリを作る。
それができたら、GUIの年賀状アプリを作る。
31:デフォルトの名無しさん
17/01/20 23:25:09.60 elfFgoly.net
普段から家計簿をつけないし
毎年年賀状も出さない
作るならもっと実用的なアプリはないか
32:デフォルトの名無しさん
17/01/21 00:19:25.12 0azuxgYp.net
麻雀AIを作るばよい
33:デフォルトの名無しさん
17/01/21 01:18:36.08 vr64D6+/.net
Real World Haskell って不人気なの?
34:デフォルトの名無しさん
17/01/21 06:37:05.65 9Cnx0LpZ.net
Real World Haskell ってやつで勉強してみるは!
35:デフォルトの名無しさん
17/01/21 08:24:01.76 bTMqa3aS.net
>>31
じゃあ部屋の写真や動画から、その部屋の3Dモデルを生成するアプリは?
模様替えとか、新しい友人に紹介する時とかに便利。
36:デフォルトの名無しさん
17/01/21 10:48:25.57 bTMqa3aS.net
質問
stack でドキュメントも同時に生成するようにビルドすると(haddock: true)、
依存してるstackageのパッケージのドキュメントは生成されるけど、
stack.yamlのextra-depsの項に追加したパッケージの物は生成されなかった。
後者のドキュメントも生成して、
~/.stack/snapshots/<arch>/<lts version>/<ghc version>/doc/
に追加したいのだが、何か方法はないだろうか?
37:デフォルトの名無しさん
17/01/21 11:52:22.55 Rj5My/0A.net
>>36
haddock-deps: true
でいけると思う
38:デフォルトの名無しさん
17/01/21 13:02:10.06 bTMqa3aS.net
>>37
ありがと、できた。
少し前に stack build --help でオプション一覧を見たはずなんだが、
ボケてたのか、すっかり見逃してたみたい。
39:デフォルトの名無しさん
17/01/21 13:29:53.85 bTMqa3aS.net
>>37
できたと思ったら勘違いだった。
プロジェクト内の .stack-work にはドキュメントが作られるが、
~/.stack/snaoshots 内のドキュメントには融合されない。
40:デフォルトの名無しさん
17/01/21 23:24:33.24 pbRX6RFT.net
>>27
プロジェクトオイラーあたりに取り組んでみるとか
アルゴリズム系で骨のある課題がお望みなら「珠玉のアルゴリズムデザイン」をどうぞ
41:デフォルトの名無しさん
17/01/21 23:51:49.78 Rj5My/0A.net
>>39
うーん、調べてみたけどわからなかった。
stack build --exec CMD でビルド後にドキュメントをコピーするか
stack build --haddock-arguments ARGS でstackからhaddockに渡るパスを上書きするとか
そういうのは思いついたけど、どっちにしても厳しいハックになると思う。
42:デフォルトの名無しさん
17/01/22 02:31:21.87 /vT6BoNb.net
なんでStringってshowするときに” “ が付くの?
ダブルクォートが付かない汎用的なshowは無いの?
43:デフォルトの名無しさん
17/01/22 06:46:55.70 0MfM9wAO.net
show使わなきゃいいだけじゃね
44:デフォルトの名無しさん
17/01/22 09:49:36.00 DE1XkK5k.net
>>41
調べてくれて、ありがとう。
こっちでもって調べてみたけど、そもそも同じ悩みを持ってる人が見当たらない。
とりあえず今回は諦めて保留にするよ。
45:デフォルトの名無しさん
17/01/22 11:16:36.00 8a05MHn2.net
実用上全く考えたこともなかったけど
show "ABC"
って
"\"ABC\""
って出力されるんだなwwwwウケる
show $ show "ABC"
"\"\"ABC\"\""
wwwwwwwwwww
46:デフォルトの名無しさん
17/01/22 12:04:32.12 +cEF+CqT.net
>>42
show 2 と show "2" が区別できないと困るじゃん
47:デフォルトの名無しさん
17/01/22 13:42:11.92 KAhPA/LR.net
>>42
どうしても欲しいなら作ればいい。
{-# LANGUAGE FlexibleInstances #-}
instance {-# OVERLAPPING #-} Show [Char] where show = id
48:デフォルトの名無しさん
17/01/22 13:55:33.85 1WETee73.net
id = read . show にするためだゾ
49:デフォルトの名無しさん
17/01/22 14:50:30.18 ppe8FoC9.net
>>19
強いHaskeller先輩「(・・・これC++で提出した方が早いな)」
50:デフォルトの名無しさん
17/01/22 18:20:13.46 TMVq9uWR.net
スペースリークの問題があってまともなコードには使えないというイメージを持ってるんだが
最近はその辺どうなってるのか知ってる?
自分はホームページ出力とかのメモリリークが問題にならないコードにhaskell使ってる
でもスペースリーク解決したらもっと色んなソフト開発に使ってみたい
51:デフォルトの名無しさん
17/01/22 19:13:53.53 0MfM9wAO.net
>>49
haskell-masterことtanakhさん!
52:デフォルトの名無しさん
17/01/22 20:48:57.10 2pJ85nMW.net
tanakhさんは最近はHaskellどころか競プロにRustで提出しだしてるよ…
tanakhさんはHaskellを見捨てたんだ…
53:デフォルトの名無しさん
17/01/22 21:14:58.84 0MfM9wAO.net
そもそもhaskell-masterと名乗って参加してたのがhaskell使えないTopCoderだったしなtanakhさん
54:デフォルトの名無しさん
17/01/22 21:43:58.70 LUcM/+lo.net
>>50
他の言語なら、いらなくなった変数にnullを代入することがスペースリークの解決策
nullを代入することには問題があるというイメージだったが
むしろ解決策じゃね?というイメージに最近変わった
その変化に貢献したのがHaskellだった
55:デフォルトの名無しさん
17/01/22 22:35:32.21 KAhPA/LR.net
>>50
あなたは何を以てスペースリークが解決されたと見なしてるの?
スペースリークを気にする必要がなくなった=解決なの?
もしそうなら、そんな未来は来ないと思う。
遅延評価を採用している以上、スペースリークは絶対に気にしなければならない。
あるヒープ領域がスペースリークなのかどうか、ランタイムシステムには判断できないんだから。
スペースリークなのかどうかがもっと調べやすくなる未来は来ると思うけどね。
56:デフォルトの名無しさん
17/01/22 23:37:17.44 LUcM/+lo.net
これに関しては遅延評価でも並列処理でも同じこと
処理が終わったらメモリ解放されるが途中で止まったら解放されない問題
57:デフォルトの名無しさん
17/01/23 08:47:48.02 z+XsKe69.net
昨日の50だけど具体的には
n=1000とか先頭で決め打ちしといてコード書くのは大丈夫でも
上限を与えられるようにするとリークするので大きなnを与えられなかったり
配列の読み書きのコードを逐一doブロックに書くのはokだったけど
<<=を使って書いたらスペースリークしたこともあるし
いちいちこれはリークするのかとか考えながらコードはかけないなと思った
haskellでproject euler 200問弱といたけどその間に思ったことだよ
えっこれがリーク?みたいなのがある
>>55
明確なスペースリーク対策のガイドラインができたらかなぁ
>>54
俺はあれはクソコードが、と思ってた
javaならweakreferenceを使うという手があって
だから最近のapiは進歩しててandroidならsetBackgroundDrawableが非推奨になって
setBackgroundをつかえみたいになってるnull代入しなくてよくなってるような
58:デフォルトの名無しさん
17/01/23 10:43:46.71 txYt6xvX.net
>>57
project euler の何番がスペースリークのせいで解きにくかったか思い出せる?
こっちでも検証してみたい。
思い出せないのなら、1番から順にやってみるけど。
59:デフォルトの名無しさん
17/01/23 11:25:17.95 z+XsKe69.net
>>58
さすがにそこまでは覚えてないけど後半はコードにスペースリークがあると
すぐセグメンテーションフォルトする
序盤の問題は時間もスペースも気にせず簡単に解ける問題が多いので
その目的なら100番ぐらいから始めた方がいいよ
1番からだとさくさく進んで楽しいけどね
60:デフォルトの名無しさん
17/01/23 12:27:38.51 txYt6xvX.net
>>59
分かった。
100番以降で、かつサイズが決め打ちできないものをやってみる。
61:デフォルトの名無しさん
17/01/23 21:52:59.71 Wt4rS9Jl.net
Project Eulerでの答えを求めるのには十分でも
HackerRankのProject Euler+の同じ問題でTLEしたりしたことある
62:デフォルトの名無しさん
17/01/23 22:38:43.36 ibzQibs1.net
say :: Show s => s -> IO ()
say s = “Say, ++ show s ++ “!!”
print 1234
=> Say, 1234!!
print “Haskell”
=> Say, “Haskell”!!
ああああああああ!!!(ブリブリブリブリュリュリュリュ!!!ブッチチブブブチチチブリリリブブブゥゥゥゥッッッ!!!)
63:デフォルトの名無しさん
17/01/24 00:13:24.79 MMtIoejY.net
Showがどういう意図のものか理解してないで使ってるって話?
URLリンク(melpon.org)
64:デフォルトの名無しさん
17/01/24 11:43:31.36 OsDnSY6Y.net
showをユーザー定義する権利を与える代わりに「正しい」定義を決める義務がなくなる
というwinwinの関係
65:デフォルトの名無しさん
17/01/24 11:53:28.57 GCEfrzc1.net
法則を満たしてるか静的にチェックする機構をコンパイラに実装することは理論上
①不可能
②可能(だが現実には困難)
③可能(で鋭意開発中)
④
66:デフォルトの名無しさん
17/01/24 12:06:44.09 OsDnSY6Y.net
法則ではなくユーザーの自由意志です
67:デフォルトの名無しさん
17/01/25 07:07:08.08 sKR8yojt.net
instance Show [Char] と書く方法の他に
instance Show Char の中で showList を定義するという方法もある
68:デフォルトの名無しさん
17/01/26 08:50:54.03 lcTQYluv.net
最近Haskellの勉強を始めたのですが、
["aa", "bb", f ["cc", "dd"] ] =
["aa", "bb", "cc", "dd"]
となるような関数fはどのように書けるでしょうか
もしくはそのような既存の関数はありますか
69:デフォルトの名無しさん
17/01/26 11:12:47.33 CzfVK0w5.net
>>68 型が合わないのでかけないと思う
70:デフォルトの名無しさん
17/01/26 13:24:39.66 lcTQYluv.net
>>69
やはり書けませんか…
ありがとうございます
71:デフォルトの名無しさん
17/01/26 16:38:08.74 2yUJ7U50.net
普通に++での結合じゃアカンのか?
72:デフォルトの名無しさん
17/01/26 16:46:28.90 +E0dl1ly.net
たぶんその前の時点でアプローチがHaskellのやり方じゃないんだろう
73:デフォルトの名無しさん
17/01/26 17:04:34.61 CzfVK0w5.net
スタック型言語なら直接68のやり方は可能だと思う
74:デフォルトの名無しさん
17/01/26 17:09:08.58 gPJK2FxR.net
アンパックしたいのか
75:デフォルトの名無しさん
17/01/26 17:18:35.09 MclODevV.net
どういう文脈でそれをしたくなったのか説明してくれれば
うまい代替案が出てくるかもよ
76:デフォルトの名無しさん
17/01/26 17:36:01.96 9y5sHdOj.net
文脈は知らないが応用問題を作ればなんとなくわかる
length ["aa", "bb", f xs]
の値がコンパイル時に定数になることを証明せよ
または定数にならないような関数fを書け
77:デフォルトの名無しさん
17/01/26 20:00:55.44 XEk5YWy9.net
>>76
応用つか全然違う問題じゃないか
78:デフォルトの名無しさん
17/01/26 21:43:31.09 q6lSzUEJ.net
68です
単なる興味本位で出来ないものかと頭を捻らせていたもので
79:デフォルトの名無しさん
17/01/27 06:04:37.64 gELNspyu.net
うーん
そもそも、それ許すとバグの温床になるからこその型だしねぇ。。。
80:デフォルトの名無しさん
17/01/27 07:51:28.34 6/LCWfy+.net
Cのプリプロセッサというのを使うというのはどうだろう
81:デフォルトの名無しさん
17/01/27 08:14:39.10 Gw4smznt.net
["a","b"] ++ (id ["c","d"])
あかんの?
82:デフォルトの名無しさん
17/01/27 08:53:18.21 3bNTd4fp.net
それを許すと何も面白くない駄作の温床になるからね
83:デフォルトの名無しさん
17/01/28 01:14:43.56 fSWa9KDr.net
Template Haskellの話題ではないのか
84:デフォルトの名無しさん
17/01/28 03:42:22.11 IY+AilYG.net
haskellだと簡潔に書けるので
-shared で .dll(in windows), .so(in linux) を作って使っているのですが、
import Data.Text (or Data.List.Split.Internals)等で関数を書くと
.hsのコンパイルはいけるんですが
-shared の時に
85:デフォルトの名無しさん
17/01/28 03:43:06.88 IY+AilYG.net
定義されていない参照です, とエラーが出ます。
取り敢えず自分で関数書いてるので問題は無いのですが、haskellの勉強も兼ねて解消したいです。
どなたか教えて頂けないでしょうか
86:デフォルトの名無しさん
17/01/28 05:34:16.63 vo7t9bEK.net
FTPだっけ。あれどうなったか知ってる人いる?
length (4,2) == 1
になっちゃうやつ。
87:デフォルトの名無しさん
17/01/28 09:59:41.44 9bw7znio.net
path パッケージの Path.parseRelDir 関数で、引数に "." や "../" が指定できないのは何故?
"." や "../" って相対パスちゃうの?
88:デフォルトの名無しさん
17/01/28 10:15:30.83 fSWa9KDr.net
> "." や "../" って相対パスちゃうの?
カレントディレクトリからの相対パスだが
そのpathパッケージとやらはカレントディレクトリを認識してるのか?
89:デフォルトの名無しさん
17/01/28 16:29:13.45 1e+Xw+ps.net
重城良国
Haskell 教養としての関数型プログラミング
Richard Bird 他1名
Haskellによる関数プログラミングの思考法
Haskell本が今度二冊も出るみたいですね
90:デフォルトの名無しさん
17/01/28 20:17:03.76 9bw7znio.net
>>88
「カレントディレクトリを認識する」ってのがどういう意味なのか分からんのだが。
たとえば filepath パッケージに System.FilePath があるけど、
こっちのはカレントディレクトリを認識してるって言えるの?
91:デフォルトの名無しさん
17/01/29 00:01:01.66 fPEtEvtP.net
>>87
なんかissueで普通ノーマライズするから不要で、そういうルールだとか言ってるが
その割に/をハードコードしてたり
言ってる意味不明だから使わない方がいいぞこれ
92:デフォルトの名無しさん
17/01/29 08:43:35.35 INpmjvgO.net
>>91
path パッケージのラッパーになってる path-io パッケージは良さそうなんだが、
path の方がそんなんでは、どうもな・・・
アドバイスありがと、止めておくよ。
93:デフォルトの名無しさん
17/01/29 08:52:55.32 W0xWcefq.net
foldrと同じ働きの関数foldr'は
foldr' :: (a -> b -> b) -> b -> [a] -> b
foldr' f v [] = v
foldr' f v (x:xs) = f x (myFoldr f v xs)
で定義できますが、:tで調べるとPreludeのfoldrの型は
foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
になってます。
foldr'の型宣言を同様に修正するとエラーが出ます。
エラーが出なくするために二行目の空リスト[]を
どう修正したら良いのか分からんとです。
94:デフォルトの名無しさん
17/01/29 08:55:53.89 W0xWcefq.net
訂正
上の myFoldr は foldr' の間違いです。
95:デフォルトの名無しさん
17/01/29 09:16:54.72 OhLobWwB.net
これ見るのはダメなん?
URLリンク(hackage.haskell.org)
96:デフォルトの名無しさん
17/01/29 13:55:23.65 /KLkodo+.net
Foldableは単にfoldr出来ますよーってだけの型クラスだから
リストなどのインスタンスを持ってこないと具体的には定義できない
(==) :: Eq a => a -> a -> Bool
だけでは定義しようがないのと同じ
97:デフォルトの名無しさん
17/01/29 15:59:36.88 ExFk7aPU.net
FTPはとっくに取り入れられてた。base 4.8.0から。気付かんかったわ
98:デフォルトの名無しさん
17/02/01 13:32:39.96 53XrODAY.net
stackアップデートできねえぞ
atomでエラーでたぞ
ghciってなんでデフォルト一行なの
勉強用なの?ふつうつかわないの?
atomとそのコマンド、パッケージ選び
Gitって初心者なのに入れるの?
ないとターミナルいれられないんだが
ああめんどい
コマンドプロンプト見にくい
フォントきもい
ターミナル必要なのか
ビルゲイツしね
ターミナルってのないとエディタからコンパイルできないの?
コンパイルなし実行できないの?
ライブラリとはなにか、どこにあるのか
アトムから読めんのか
ライブラリよんで勉強するもんなのか
Windowsのディレクトリなにこれ
ユーザー名フォルダの場所とか意味不明
パスってなに、パスの通し方
こんなんググらせんなよ
よくこんなの考えやがったな
やること多すぎ 時間かかりすぎ
おぼえたくない 時間のムダ
技術じゃなくて雑学だな
自動化しとけまとめとけクソクソうんこ
それでもプログラマか
啓蒙する気ゼロだなほんと
99:デフォルトの名無しさん
17/02/01 13:51:05.42 53XrODAY.net
オブジェクトファイルとインターフェースファイルのこともちゃんとまえもって教えないとダメでしょ
qiitaとか入門云々とかはてなブログとかほんと死ねばいいのよ
なんでもかんでも初心者にググらせてんじゃないよ!
100:デフォルトの名無しさん
17/02/01 16:06:50.00 Iw+tyvVU.net
コンパイラは難しい
昔の古いインタプリタは簡単だった
確率は1/2じゃなくて実際は9割以上が難解な方を選ぶんだろう
101:デフォルトの名無しさん
17/02/01 17:56:57.37 UXwydrfk.net
またワードサラダボットが稼働を始めたか
102:デフォルトの名無しさん
17/02/01 18:22:05.14 C6fGSB5S.net
初心者じゃなくなってもなんでもかんでもググってる俺
カン拡張って何?ふむふむわからん
103:デフォルトの名無しさん
17/02/01 18:27:07.04 v0ndbkEe.net
Kan拡張?
聞いた瞬間分かるわ圏論由来ってwww
圏論の本読め
104:デフォルトの名無しさん
17/02/01 19:57:57.60 M7LFtYkC.net
リンシャンカイホウ?
105:デフォルトの名無しさん
17/02/01 20:05:04.51 Iw+tyvVU.net
紙の本がなくなったら本を読むのもインストールで挫折する時代が来るかも
106:デフォルトの名無しさん
17/02/04 23:20:45.84 9/lBQk1n.net
俺の部屋にはインストールで挫折した本が積み重なっている
107:デフォルトの名無しさん
17/02/05 14:17:32.23 TDpThq2o.net
ネタバレはズルという思想があるよね
タダで教えてもらえるネタバレを全部理解してから本を買うという発想ができない
108:デフォルトの名無しさん
17/02/05 22:41:58.34 TdsB4n5F.net
FIT(Framework for Integrated Test)
URLリンク(fit.c2.com)
これの Haskell 実装にチャレンジしてる人いる?
そんな人のブログやHP知らない?
試しに GitHub を探してみたけど、見当たらない感じ。
109:デフォルトの名無しさん
17/02/05 22:42:57.06 Whb3/S6q.net
俺も龍を捨てて玉を詰むという勇気が出ない
110:デフォルトの名無しさん
17/02/06 12:52:47.67 Ld2MqDtI.net
Haskell obj
111:ectiveってどうなったの? やっぱダメだった?
112:デフォルトの名無しさん
17/02/06 14:32:11.26 CcXtgB5F.net
>>110
これか?
URLリンク(hackage.haskell.org)
Haskell objectiveでググると最初に出てくる
113:デフォルトの名無しさん
17/02/06 14:44:23.19 Ld2MqDtI.net
使いやすさ的にどうだったのかなって。
作ったの日本人っぽいけど
114:デフォルトの名無しさん
17/02/06 15:50:30.09 CcXtgB5F.net
>>111
Haskellでの合成可能なオブジェクトの構成とその応用
URLリンク(fumieval.github.io)
>この章では、本稿で提案するオブジェクトの定義やその性質について説明する。なお、これから
>示すオブジェクトや関連する構造は、公開している objective パッケージ 1 に格納されている。
> 1 URLリンク(hackage.haskell.org)
115:デフォルトの名無しさん
17/02/08 01:03:40.92 E7OnquDd.net
functor分からんとHaskellは使えないの?
116:デフォルトの名無しさん
17/02/08 03:27:27.73 lPz/aekC.net
凄いHを一通りやって、今はReal world haskellやってる途中
設計関連がまだよく分かってないな
モナド変換子とか非同期関連もよく分かってないや
関数型の勉強で始めたけど中々難しい
言語としては今の所簡潔で好きではある、ってか他言語の括弧がキモく見えてきた
117:デフォルトの名無しさん
17/02/08 09:54:44.42 8j/X+nWQ.net
オフサイドルールには賛否両論ある
118:デフォルトの名無しさん
17/02/09 04:29:48.20 SonJzAjc.net
>>114
んな事ない。
と言うか、昔はファンクタ自体無かった。
モナドあるならファンクタも入れろや的な。
モナドも、使うぶんにはいつの間にか使ってる感じ。
モナドとは何か?とか考えると難しいけど、まあモナドもファンクタも型の一種。
そう言う特性の関数や演算子を使うための。
言わば、処理の流れにも型があるとでも思ってくれ。
119:デフォルトの名無しさん
17/02/09 08:20:37.05 CYxwUQWJ.net
>>114
実際的に重要なのはFunctorというよりも(そのインターフェースの)fmapの理解かな
多分よく出会うのはListのmapだけど、まずはこいつを使いこなせるようになれば
Haskellらしい、関数型らしい書き方ができるようになってくると思う
120:デフォルトの名無しさん
17/02/09 08:31:16.17 /fB7Lbok.net
fmapとmapの名付けは解せない
121:デフォルトの名無しさん
17/02/09 08:58:32.86 UTxumv29.net
モナド則は
型と関数と関数合成が満たすべきルール。
ただし自作モナドがモナド則を満たすことを保証する機構はない。
122:デフォルトの名無しさん
17/02/10 15:45:40.33 5JASqTbe.net
fromIntegralに短縮名つけるのが癖の人っている?
fI = fromIntegral 的な
123:デフォルトの名無しさん
17/02/10 18:50:22.57 xMx0FpSS.net
長くなるならletで別行で定義する
124:デフォルトの名無しさん
17/02/11 23:22:07.65 8gjNJV43.net
メッセージングシステムを主なアーキテクチャとしているアプリケーションにおいて、
そのメッセージの種類を増やすことでアプリケーションの機能を拡張する際に、
コンパイルすべきモジュールの数を最小限に抑える方法を探しています。
メッセージングシステムというと大げさかもしれませんが、
たとえば Win32API のウィンドウメッセージのようなものを想像してください。
モジュールAとモジュールM、およびモジュールTがあるとします。
モジュールTの中ではMsg型が定義されいます。
data Msg = MsgX String Int | MsgY [Double]
また、モジュールTはモジュールAとモジュールMの両方からインポートされています。
モジュールMの関数はモジュールAの関数を呼び、モジュールAの関数は型Msgの値を返します。
モジュールMの関数はMsgXが帰ってきた場合と、MsgYが帰ってきた場合とでその後の処理を変えています。
ここで、このアプリケーション機能を拡張しようと、Msg型にデータコンストラクタMsgZを追加しました。
そして、MsgZを返す関数を持つモジュールBを新たに作りました(もちろんモジュールTをインポートしています)。
ただし、既存のモジュールAは何も変更していません。
しかしそれでも、これをビルドする際にはモジュールAの再コンパイルが必要です。
インポートしている、つまり依存しているモジュールTが更新されたからです。
このような単純なメッセージングシステムの作りだと、どうしてもアプリケーションを拡張する際にモジュールTの更新が伴い、
それによって、変更していない多くのモジュールの再コンパイルが必要になります。
かといって極端な話、メッセージや付随するデータを ByteString 型にシリアライズすれば再コンパイルの問題は解決しますが、
今度は型の不一致や未定義メッセージなどのバグがコンパイル時に発見できなくなり、それもマズいです。
厳格な型システムの恩恵にあずかりながら、かつ不要な再コンパイルを抑えるようなメッセージングシステムの構築方法はないでしょうか。
125:デフォルトの名無しさん
17/02/12 13:50:57.94 EOfitV0o.net
javaですら良く分からんやつに
haskellのモナドなど分かるはずも無く
126:デフォルトの名無しさん
17/02/12 15:45:54.11 +1FsHT8L.net
ポインタ理解するときもモナド理解するときも小1で自転車補助輪外す時もみんな同じ�
127:エ覚だった気がする 学習は滴定曲線のように、『気づいたら知って』いた
128:デフォルトの名無しさん
17/02/12 16:10:07.24 QGOwrBDz.net
たいていの概念は名前も説明も勿体つけてるが実はたいしたことはない
さらに最悪なのは長々と理屈ついている割に扱いは他の概念と変わらないやつだ
そういうのを世間では屁理屈という
129:デフォルトの名無しさん
17/02/12 17:52:39.61 C9OkM4dT.net
西尾維新批判はやめろ
130:デフォルトの名無しさん
17/02/12 21:33:24.01 hoDvKKnX.net
アベノミクスとか新常態とかもそうだよね
131:デフォルトの名無しさん
17/02/12 22:25:13.91 cs8Gyxec.net
haskellの本が出るみたいだから買ってみよう
132:デフォルトの名無しさん
17/02/12 23:59:55.00 t7tEKqZ9.net
>>89の二冊か
133:デフォルトの名無しさん
17/02/14 00:10:05.79 haBe4Sdm.net
お前らってこういうのチェックしてたりするの?
Haskell News
URLリンク(haskellnews.org)
134:デフォルトの名無しさん
17/02/14 07:07:04.56 0/yLOI7Z.net
そもそもfoldはループより速い?
135:デフォルトの名無しさん
17/02/14 10:36:57.61 CVjuh2pk.net
>>132
Haskellにはループ構文はありません。
一体何と比較した話でしょうか?
136:デフォルトの名無しさん
17/02/14 16:50:38.39 m6BuE6wx.net
>>133
C
137:デフォルトの名無しさん
17/02/14 21:33:40.60 jOgsWiWm.net
>>134
Haskellの中で複数のアルゴリズムの比較はできますが、
C言語のforループとの速度の比較はできません。
138:デフォルトの名無しさん
17/02/14 23:12:33.60 Bh34MboJ.net
バイナリを吐かせて逆汗すれば比較できるんでないの?
つっても多くの関数呼び出しはインライン展開されるんだろうが
139:デフォルトの名無しさん
17/02/15 05:29:57.20 De10g5Ib.net
>>132
データ構造やコンパイラによる。
Haskellは基本リストなのでアドレスが連続してるとは限らない。
Cだと同じ処理を配列に施す様なループはSIMD命令に変換される。
Haskellはそう言う命令に変換する為のデータ構造使う。
(データの連続性を保証するためにもデータ構造が別なのだと思う)
IntelC++コンパイラとかだと最新のSIMD命令に対応してる。
gcc程度まではHaskellでも書き方次第では追い付けるだろうけど、CPUメーカー謹製の最新CPU対応コンパイラにまでは勝てない。
入門書レベルではHaskellはCに勝てないけど、いかなる並列・並行処理も否定してない。
140:デフォルトの名無しさん
17/02/15 06:42:21.88 +7DpWr8H.net
そもそもHaskellのfoldとCのforループとでは、
速度を比較するための条件をそろえる事ができません。
たとえばプロセスを立ち上げてから処理し終えるまでの時間、
このレベルであればHaskellとCの比較に意味はあります。
実行環境という条件を同一にできるからです。
(ちなみに、この場合はCの方をHaskellより速くすることができます)
一方HaskellのfoldとCのforというレベルでは、まず計算するために入力するデータが違います。
foldの入力データ型はリスト(Foldableのインスタンス)ですが、同じものをCで再現できますか?
入力データをそろえなければ「関数程度のレベルの比較」に意味はありません。
141:デフォルトの名無しさん
17/02/15 07:03:08.40 mu4JLPUi.net
扱うモナドがファンクタのとき
return . f =<< m
は
f <$> m
とシンプルに置き換え可能なのですね
142:デフォルトの名無しさん
17/02/15 10:15:38.52 JnBGC/9x.net
何年か様子見してたけどやっぱり流行らんな
難しいから底辺には普及しないはわかるが
だったら上位の連中は食いつくかと言えばそんなことはなかった
143:デフォルトの名無しさん
17/02/15 11:05:35.10 3lGP54OB.net
難いのに普及したC
144:デフォルトの名無しさん
17/02/15 11:41:14.45 1S7+uRG8.net
C以前の言語がひどすぎたんだ
145:デフォルトの名無しさん
17/02/15 13:18:52.67 jktpXUxB.net
えっ、Modula-2とかCより読み易くて
低レベルのシステム記述も出来たのに
全然普及せんかったでw
政治的理由と思うが突然Turbo Modula-2
の販売が中止になってTurbo-C出たけどね。
146:デフォルトの名無しさん
17/02/15 17:36:32.27 kkhdLQ6B.net
出た! 陰謀論!
147:デフォルトの名無しさん
17/02/16 00:44:11.97 PsfAYoHu.net
流行り廃りに合理的な理由なんてない。
148:デフォルトの名無しさん
17/02/16 04:02:18.89 zxmzXW5F.net
普及言語からHaskellに乗り換えに難しく感じる部分
・do記法は関数で構成されるという関数型プログラミングの理解のための学習の邪魔をする(混乱させる)
・型を気にせず書けるスクリプト言語からだと強力すぎる型推論のおかげで型があるという感覚になじめず型に関するエラーでイラ立つ
・C言語系からだとreturnがreturn構文じゃない、if-elseが式である
・イミュータブルしかない、再代入が出来ない、(ように感じ)思うようにコード書けず辛い
・Haskellについて語る書の書き方や視点が数学寄りのものが多く理解が難しい(奴らが言うようなこまけえ数学っぽいこと気にせんでもコードは書けるっちゅうに純粋さにこだわりすぎ)
149:デフォルトの名無しさん
17/02/16 15:22:31.85 VWTLMYuE.net
そもそもハスケルの強みって何?
計算時間ではビジュアルスタジオに遠く及ばないだろ?
描画とか数学的処理も他の高級言語使った方がよくね?
150:デフォルトの名無しさん
17/02/16 16:47:16.10 fRybmYDX.net
仕様記述言語の強み
自分が強くなるために右往左往するよりも
強くなりたいならああしろこうしろと指図して右往左往させる側
151:デフォルトの名無しさん
17/02/16 18:17:34.39 VWTLMYuE.net
右往左往の意味がよく分からんが、自分が考えて手を動かす量が減るということかな?
152:デフォルトの名無しさん
17/02/16 19:16:01.32 9Ohg+UxU.net
Haskellでゲーム作りたいです!
153:デフォルトの名無しさん
17/02/16 20:28:16.21 qwVWj3LU.net
言語仕様はともかく実行環境がおそ松すぎる
154:デフォルトの名無しさん
17/02/16 21:04:48.77 lgZA8NJM.net
>>151
どのような意味で言っているのかよく分かりません。
もう少し詳しく説明していただけないでしょうか。
155:デフォルトの名無しさん
17/02/17 08:05:51.13 nCBINic8.net
>>151
腐女子なの?
156:デフォルトの名無しさん
17/02/17 08:37:50.87 iKIs1hpk.net
遅いと言われようと、フィボナッチ数列をzipWithで1行で書ける言語というところに魅力を感じている
(そんなに何度もフィボナッチ数列を書く機会があるわけではないが表現力の一例として)
157:デフォルトの名無しさん
17/02/17 10:28:30.13 nCBINic8.net
1行フィボナッチって結構あるんだな全然知らなかった
URLリンク(wiki.haskell.org)
158:デフォルトの名無しさん
17/02/17 13:55:10.09 gJ+iD/w/.net
パスカルの三角形を出したいんだけど、
++使ってるのが気に食わないのだがうまく消せなかった
import Data.List (unfoldr)
pastri :: [[Int]]
pastri = unfoldr (\l -> Just (l, body l)) [1]
where
body xs = 1 : zipWith (+) xs (tail xs) ++ [1]
main = mapM_ print $ take 15 pastri
159:デフォルトの名無しさん
17/02/17 19:08:56.34 ishbEDrB.net
型に関数型のデータを持たせることはできますか?
GHC.TypeLitsで自然数型のデータをもたせることは出来ましたがどうやら関数型は無いようです
ニュアンスとしては以下のような事をやりたいです
newtypeでaを定義し直しMonoidのインスタンスにすれば同じ処理は出来ますが
冗長性を省いてシンプルに記述したいです
newtype Hoge (f :: a->a->a) (a :: *) = Hoge a deriving Show
instance (Num a) => Monoid (Hoge f a) where
mempty = Hoge 0
(Hoge x) `mappend` (Hoge y) = Hoge (f x y)
160:デフォルトの名無しさん
17/02/17 20:56:35.22 BpdtDTW+.net
data Hoge a = Hoge (a -> a -> a) a
これだとHoge f 0とHoge g 0の型は同じになってしまう
引数fをgに変えると戻り値の型が変わるような関数Hogeは動的言語なら作れるかも
161:デフォルトの名無しさん
17/02/17 21:34:57.67 WL7YVLDK.net
>>156
長さが異なるリスト同士の zipWith で、短い方の末尾をデフォルト値で補って長さを揃える、
そんな関数 zipWith' を作ってはどうでしょうか。
zipWith' :: (a -> a -> a) -> a -> [a] -> [a] -> [a]
zipWith' _ _ [] [] = []
zipWith' f d [] (y:ys) = f d y : zipWith' f d [] ys
zipWith' f d (x:xs) [] = f x d : zipWith' f d xs []
zipWith' f d (x:xs) (y:ys) = f x y : zipWith' f d xs ys
これを使えば、例えば [1, 3, 3, 1] から [1, 4, 6, 4, 1] は次のようにして作れます。
let xs = [1, 3, 3, 1]
zipWith' (+) 0 xs (0 : xs)
この関数は一方だけでも無限リストだと止まらないので注意が必要ですが、
ときどき役に立つので私は自分のツールボックスに入れています。
162:デフォルトの名無しさん
17/02/17 22:22:44.78 nCBINic8.net
パスカルの三角形はロゼッタコードにあるのが限界でしょ
Pascal's triangle - Rosetta Code
URLリンク(rosettacode.org)
163:デフォルトの名無しさん
17/02/18 01:35:58.15 4ADoOqjk.net
>>156
以前にこんなのを書いたことがある
pascal :: (Integral a) => [[a]]
pascal = map (1:) $ (:) (repeat 0) $ zipWith (zipWith (+)) pascal $ map tail pascal
-- pascal =>
[
[1,0,0,..],
[1,1,0,0,..],
[1,2,1,0,0,..],
[1,3,3,1,0,0,..],
..
]
2重リストなんで見た目複雑だけど発想としては
fib = 0:1: zipWith (+) fib (tail fib)
とほぼ同じ
164:デフォルトの名無しさん
17/02/18 12:34:28.15 OQ3VgdS2.net
++をネタにする作者の気持ちをスルーしてパスカルの三角形を熱く語る
理系の鑑
165:デフォルトの名無しさん
17/02/19 07:14:56.06 rxEXn9HF.net
pascal = map (takeWhile (/= 0)) $ iterate (\xs -> 1 : zipWith (+) xs (tail xs)) (1 : repeat 0)
URLリンク(melpon.org)
166:デフォルトの名無しさん
17/02/19 10:09:57.42 obWbRffz.net
ところで・・・
コメントを読まなくても、どのように計算しているのかがぱっと見て分かる、
それが関数型が持つ高い宣言性の良いところ。
また、そのようにプログラムしても、もともとGHCが持つ優秀な最適化能力や、
プログラムの見た目を壊すことなく最適化を促すことができる仕組みのおかげで、
結果的にかなり効率の良い処理がなされる実行ファイルが出力される。
(実用的なアプリケーションで十分に耐えられる)
にも関わらず、そのメリットをあえて潰すようなプログラムをする人が稀にいるが、
純粋関数型のHaskellを使っておきながら、他に優先すべき事項があるのだろうか。
まぁ、縛りパズルをして遊んでいるのなら分かるが。
167:デフォルトの名無しさん
17/02/19 11:37:29.74 TYcfVj75.net
今ここで言う必要のないものを必要と思い込むことも縛りのパターンの一つ
168:デフォルトの名無しさん
17/02/19 18:51:42.32 rxEXn9HF.net
どうしても難解になりがちはワンライナーやコードゴルフで遊ぶのは人の自由だと思うけど遊び以外で使うのはたしかにどうかと思う
169:デフォルトの名無しさん
17/02/19 19:20:27.12 Mzz/1Hry.net
ポイントフリー教も1変数のパイプみたいなやつならまだ分かるのだが
(中間変数が無くなるから効率が上がるという話もある、
そのくらいGHCが最適化してくれてもよさそうなのに)
2変数以上になると完全に暗号めいてて困る
170:デフォルトの名無しさん
17/02/19 20:52:17.90 TYcfVj75.net
xss = (1 : repeat 0) : [ zipWith (+) (0 : xs) xs | xs <- xss ]
pascal = [ takeWhile (/=0) xs | xs <- xss ]
これは2変数というか2重ループ
それと再帰のために自分自身に名前をつけた時点でポイントフリーは諦めている筈
171:デフォルトの名無しさん
17/02/19 23:43:55.15 rxEXn9HF.net
ポイントフリーって何?こういうこと?
pascal = map (takeWhile (/= 0)) $ iterate ((1 :) . map sum . transpose . take 2 . tails) (1 : repeat 0)
URLリンク(melpon.org)
172:デフォルトの名無しさん
17/02/20 00:18:45.73 mtupkOQi.net
変数名かんがえたくないときポイフリできたらしちゃうことある
173:デフォルトの名無しさん
17/02/20 00:20:11.39 bFWxmJHr.net
ArrowLoopの解釈はこれで合ってるの?
スレリンク(dame板:241-242番)n
174:デフォルトの名無しさん
17/02/20 20:56:54.49 uIdMc98M.net
ArrowLoopがどういうインターフェイスなのかいまいちよく分からないけど
その定義でどう動くかはfによるとしか・・・
175:デフォルトの名無しさん
17/02/20 22:57:03.60 tib6qfwe.net
結局ハードウェアの動きとあまりに乖離しすぎてるってのが
普及しない理由じゃないかと。
176:デフォルトの名無しさん
17/02/21 04:45:41.06 bkUsfADx.net
量子コンピュータが普及する時は言語どうなるんかな
CPUに合わせた新しい言語になるのか、今の言語をベースにコンパイラに任せるのか
原理とか全く知らなくて言ってるけど
177:デフォルトの名無しさん
17/02/21 11:55:34.70 hz5m2IGZ.net
メモリとCPUが分離しすぎているおかげでメモリ上のデータ構造に変化がない
OOPははそこを変えようとしたのか
分離するのやめれば破壊的イノベーションが起きるのではと
178:デフォルトの名無しさん
17/02/21 19:46:11.18 CLRDv6M0.net
ほんとぉ?
179:デフォルトの名無しさん
17/02/21 22:11:08.30 3rYbm5Zu.net
golangはOOPとは違うような
180:デフォルトの名無しさん
17/02/22 01:32:49.98 doFig/5A.net
tanakh神って色々とやられておられるのですね
URLリンク(hackage.haskell.org)
181:デフォルトの名無しさん
17/02/22 11:25:20.39 C8G0Nbdq.net
ContrainedなFunctorを実装していて直面した問題です
問題の本質を以下の単純化したコードで例示します
最後2つのインスタンス宣言の間で"Duplicate instance declarations" エラーが発生してしまいます
これは型aがOldAとUsefulFoo両方のクラスのインスタンスである場合どちらのnewHogeを実行すればいいのか区別がつかないからですが
実用上このケースは無意味で意図してコードを書かなければ起こり得ません
OldAとUsefulFooの両方のインスタンスになるような型が存在しないことをghcに伝えられればエラーにしなくても良いと思うのですがそのようなテクニックや言語拡張はあるのでしょうか
{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
class OldA a where
hoge :: a -> a
class NewA a where
newHoge :: a -> a
class UsefulFoo a where
us :: a -> a
ef :: a -> a
ul :: a -> a
instance OldA a => NewA a where
newHoge = hoge
instance UsefulFoo a => NewA a where
newHoge = us . ef . ul
182:デフォルトの名無しさん
17/02/23 00:49:33.52 9wlFqT9C.net
諦メロン
183:デフォルトの名無しさん
17/02/23 06:24:32.19 1D9YdnQF.net
>>178
最近はRustに御執心の様子
184:デフォルトの名無しさん
17/02/24 02:19:21.58 bZ+UJBqj.net
>>179
OldAとUsefulFooとNewAの設計方針が間違っていたのでは?
185:デフォルトの名無しさん
17/02/24 11:52:40.03 e/BP7pNw.net
最新のGHCは簡単な余再帰が末尾再帰に変換されて最適化かかるの?
186:デフォルトの名無しさん
17/02/25 01:04:24.08 wcM+rtIC.net
>>182
URLリンク(melpon.org)
↓
URLリンク(melpon.org)
187:デフォルトの名無しさん
17/02/25 06:14:09.47 rUogqkUr.net
これがアスペか
188:デフォルトの名無しさん
17/02/25 06:24:01.20 E4CT8R9/.net
fib_mem :: Int -> Integer
fib_mem = (map fib [0..] !!)
where
fib 0 = 1
fib 1 = 1
fib n = fib_mem (n-2) + fib_mem (n-1)
URLリンク(www.packtpub.com)
フィボナッチは前スレのこれが美しすぎた。
これを見た後では
zipWithのフィボナッチとか完全に霞んで見える。
189:デフォルトの名無しさん
17/02/25 11:33:38.62 J8MTJSeU.net
数式に近いから美しいって言ってるのかもしれないけど
それは
fib_mem :: Int -> Integer
fib_mem x = _fibs !! x
_fibs = map _fib [0..]
_fib 0 = 1
_fib 1 = 1
_fib n = fib_mem (n-2) + fib_mem (n-1)
みたいに一時データがユニークになるって話だから
メモ化されるって言ってもO(n^2)だけどな
190:デフォルトの名無しさん
17/02/25 12:20:37.16 5RveVCtH.net
こんな所で感動しちゃってどうするの
そういうのは万策尽きて神頼みするような時だけいい
数学に感情は不要
191:デフォルトの名無しさん
17/02/25 18:51:36.03 A0aZ5Z9S.net
初歩的なメモ化で感動できた頃の心の輝きは大切にしていきたい
192:デフォルトの名無しさん
17/02/25 18:58:12.64 A0aZ5Z9S.net
メモ化してトップダウンするより足していってボトムアップの要領の良さが勝つ回
193:デフォルトの名無しさん
17/02/26 22:44:13.60 +sRU0DuI.net
stack new して作ったプロジェクトでライブラリを作りました。
(cabal ファイルに executable の代わりに library の項目を書いた)
stack build して正しくビルドされたことを確認してから stack install しました。
この後、別の stack new したプロジェクトで、先程 stack install したライブラリを使用するには、
どうすればよいのでしょうか。
194:デフォルトの名無しさん
17/02/27 10:48:09.56 TbO8J9W/.net
stack.yamlのpackagesから設定できるよ、stack installはしなくて良い URLリンク(docs.haskellstack.org)
195:デフォルトの名無しさん
17/02/27 22:42:50.07 6zX/SjR0.net
>>192
出来ました。
ありがとうございました。
196:デフォルトの名無しさん
17/03/01 13:33:54.14 5kGyNHm4.net
諸君、議論したまえ
197:デフォルトの名無しさん
17/03/02 08:35:24.25 jHvj97KG.net
スレリンク(prog板:812番)n
Haskellerが現れた
198:デフォルトの名無しさん
17/03/06 19:44:44.66 BYkqMHF2.net
新しく出たHaskell本の感想クレクレ
199:デフォルトの名無しさん
17/03/06 20:21:59.21 j+wBUtqM.net
前書きだけ立ち読みしたけど
あれ関数プログラミング入門を書き直したものなんだな
200:デフォルトの名無しさん
17/03/06 20:28:33.59 MHxEW6Wj.net
古い方持ってたら不要なのね
201:デフォルトの名無しさん
17/03/06 23:01:20.41 WL27y1mu.net
マジかよ危うく買うところだった
202:デフォルトの名無しさん
17/03/07 00:14:37.81 +xePePxn.net
かなり書き直してるよ
203:デフォルトの名無しさん
17/03/07 10:44:02.94 mr++RUpk.net
Bird氏の本の第三版か。
あの人、Functional Programmingの大御所なんだね。
すごいHやGraham氏、その他日本人著者の書いたのをいろいろ読んだけど、
コアな部分を理解するならBird氏の本だと思った。
翻訳第二版のファンシーな表紙をやめて、
原著の表紙の虎を持ってきたのは何かあったのだろうか?ww
204:デフォルトの名無しさん
17/03/07 13:07:01.84 H+HmLSCA.net
>>201
コアと言うのは、例えばどんな部分?
205:デフォルトの名無しさん
17/03/07 13:38:15.87 fYd9KAIw.net
と思ったらそもそも関数プログラミング入門買ってなかったのでこれを機会に買おう
206:デフォルトの名無しさん
17/03/07 17:44:15.63 rdG5C9r5.net
kinkyな表紙にしてくれ
207:デフォルトの名無しさん
17/03/07 17:49:10.46 mr++RUpk.net
>202
最初から正格、非正格を念頭に置いた上で議論が進んでいく。その時点で既に毛色が違う。
豆知識として、リスト内包表記とdo構文の<-の関係も載ってた。
証明問題が多く、数学がわかんないときつい感じ。
208:デフォルトの名無しさん
17/03/07 20:23:58.44 36OrCepo.net
>>205
あぁなるほど、そう言うのを一般に「コア」って言うのか
ありがと
209:デフォルトの名無しさん
17/03/08 06:06:40.10 XWjfITmE.net
URLリンク(stackoverflow.blog)
210:デフォルトの名無しさん
17/03/08 06:44:38.74 KZ+JXzQR.net
今更すぎる
和訳で知ったのに原文貼って物知り顔するな
211:デフォルトの名無しさん
17/03/08 12:31:57.39 RBmx3E25.net
>>207
週末に人気のあるプログラミング言語(StackOverflow調べ)
URLリンク(developers.srad.jp)
週末にいちばん多く使われるプログラミング言語は?
URLリンク(postd.cc)
212:デフォルトの名無しさん
17/03/11 21:23:14.84 uo9d8gfu.net
Haskellにも依存型があと数年以内に組み込まれるらしいですが、使用目的は専ら型安全性を得るためなのでしょうか?
213:デフォルトの名無しさん
17/03/11 23:30:29.33 UHyrmxcZ.net
定理証明支援系はいつですか?
214:resumi
17/03/12 01:08:56.73 f0Kjw9v5.net
これ普通にショックだね。。
本当なの??
URLリンク(goo.gl)
215:デフォルトの名無しさん
17/03/12 01:54:17.97 kqHBJY7y.net
見てないけどグロ
216:デフォルトの名無しさん
17/03/12 22:59:29.77 fpOKmvSG.net
最新のGHCだと余再帰が可能な限り自動で末尾再帰に変換されて最適化がかかるって聞いたんですけど本当すか?
217:デフォルトの名無しさん
17/03/13 08:05:36.75 0mFH2buk.net
tanakhに訊け
218:デフォルトの名無しさん
17/03/13 10:55:02.44 dlgNAjv1.net
tanakhとかうざ
219:デフォルトの名無しさん
17/03/14 22:01:52.58 EYcQAf3p.net
Data.Setをモナドにしたい場合はどうしてますか?
GADTsを使ったものと
URLリンク(wiki.cse.unsw.edu.au)
type familyを使ったものと
URLリンク(hackage.haskell.org)
もしくはそれ以外にも方法はあるのでしょうか
220:デフォルトの名無しさん
17/03/16 21:36:03.95 4z74DpyU.net
使う型がInt32なら32を、Int64なら64をコンパイル時に決定してソースコードに埋め込むメタプログラミングな関数を書くにはどうしますか?
221:デフォルトの名無しさん
17/03/16 22:28:40.43 4z74DpyU.net
Int に 対する read が遅くて困っています。
80万個のInt型をreadするのに、10^9付近の整数ばかりの場合と、1とか10とか小さな整数ばかりの場合とで 2 倍も処理時間が違ってきます。(2秒が4秒です!)
もっと速く読み込む方法はありませんか?
(但し標準入力からとします)
222:デフォルトの名無しさん
17/03/16 23:18:00.86 xmljzEMX.net
readInt
223:デフォルトの名無しさん
17/03/16 23:20:30.52 xmljzEMX.net
ByteStringのreadInt
224:デフォルトの名無しさん
17/03/16 23:21:15.32 xmljzEMX.net
readIntegerだった
うろ覚えだったすまん
225:デフォルトの名無しさん
17/03/17 00:45:32.34 gNJfFjGV.net
URLリンク(melpon.org)
226:デフォルトの名無しさん
17/03/17 00:46:54.92 gNJfFjGV.net
これは全然メタじゃない
227:デフォルトの名無しさん
17/03/18 18:18:35.73 bH58Sv6/.net
>>221
ありがとうございます。10倍速く動くようになりました
228:デフォルトの名無しさん
17/03/18 19:37:41.00 bH58Sv6/.net
ひょっとして、foldl か foldl' かよりも、そこに渡す二項関数の方を正格にするか遅延のまま
かが速度に関わっているのでしょうか?
※二項関数は(+)やmaxのように単純であるとする
229:デフォルトの名無しさん
17/03/19 04:00:42.66 o/zGHEH2.net
ん、何言ってんだ。二項関数の問題じゃなくて二項関数に渡す『二つの引数が今すぐどちらも値まで評価されるかどうか』が問題なのか。
される場合、foldl'の方がサンクなしの省メモリ(定数空間?)で処理が進むのか。
foldl'で正格に評価するといってもWHNFで止まるんですもんね
サンクが要らないからその部分(サンクの作成と破棄)のオーバーヘッドがなくなってちょっとだけ速くなるのか。でもあくまで foldl' の利点は省メモリの方か
230:デフォルトの名無しさん
17/03/19 10:06:06.54 awlj00/Y.net
URLリンク(github.com)
URLリンク(code.world)
これに関する質問ってこのスレでいいの?
231:デフォルトの名無しさん
17/03/19 10:30:10.95 fNC16+Hl.net
速度の比較をしたいならまずプロファイルを取りなさい
232:デフォルトの名無しさん
17/03/19 14:43:43.30 qjqnp6Y8.net
V8エンジンで無茶苦茶速くなったことだし、もうTypeScriptでいいやと思うようになった。
233:デフォルトの名無しさん
17/03/20 20:37:53.08 H6ds3WUf.net
教えてください
何らかの型の巨大データがメモリ内にあったとして、データが用済みになった時に手動で解放する方法がHaskellにありますか?
そもそもそういう発想が間違いかも?
234:デフォルトの名無しさん
17/03/20 22:25:28.88 THpWaU1J.net
mark&sweepいらないなと思った時に参照カウントに変更する方法
言語を変えなくてもコンパイラを変えるだけでできそう(できたとは言ってない)
235:デフォルトの名無しさん
17/03/20 22:42:41.03 tOiVLltG.net
>>231
用済みになった時に手動で解放というのが、
1) たとえどこかから参照されていようが強制的に解放する
2) 参照がなく解放できる時にスケジューリングを待たずにGCを強制する
どちらの意味なのか分からん。
前者のつもりなら、たしか方法はなかったような気がする。
この発想は間違っていると思う。
自分が仕込んだメモリリークの問題を隠しているだけ。
後者なら、base パッケージの Systwm.Mem モジュールを調べてみて。
これなら分かる。
例えばゲームで、できるだけステージ途中で時間かかかるGCが起動しないように、
ステージ開始直前に強制的にGCさせたい、とか。
236:デフォルトの名無しさん
17/03/20 22:58:59.79 H6ds3WUf.net
>>233
ありがとう。質問してよかった。
こちらのイメージ的にはCで言うところのfreeで1)が近いと思うが、GCを強制する
発想がそもそもなかったです
断続的にでかいデータを扱うので、次のロードまでにメモリを解放しておく必要
がありまして。
Systwm.Memを調べてみます。
237:デフォルトの名無しさん
17/03/21 07:16:46.72 RPjo5BAn.net
演算子の部分適用の書き方で
演算子との間にスペースを書かないのはHaskellの作法?
(+ 3) (3 +) じゃなく (+3) (3+) って書くじゃんみんな
238:デフォルトの名無しさん
17/03/21 09:36:45.55 bH1u/9cj.net
みんなそうしてるから真似してそうしてるだけだろ。
わからないことは調べるのはめんどくさいから真似しておこうとか思ってそう。
239:デフォルトの名無しさん
17/03/21 13:49:23.04 L0SduR/f.net
>>235
普通に2項演算子として用いている場合は項と演算子とが独立してる感があるが、
部分適用した場合は「3を加える関数」という一塊の概念というイメージが強い
なんとなくだけどそんな使い分けではないかと思ってる
240:デフォルトの名無しさん
17/03/21 13:55:43.06 TPAad80u.net
GUIには等幅ではないフォントがあるから
1ピクセル単位でスペースを描く作法とかありそう
241:デフォルトの名無しさん
17/03/21 14:18:51.18 kbUhzU5T.net
Lispの関数 1+ とかの影響でない?
242:デフォルトの名無しさん
17/03/21 14:46:18.79 LpaugWCV.net
逆にHaskellでだけスペース挟んだりしたくないだろ
243:デフォルトの名無しさん
17/03/21 19:57:22.30 zopuGVTD.net
人間は文章を読むのに時間がかかる筈なので、質問と同時にGCを強制発動して、ユーザが質問を理解し返答を入力するまでの間にGCを終えたい
244:デフォルトの名無しさん
17/04/02 18:01:47.89 HoO7tpUE.net
「関数プログラミングの思考法」で勉強してるんですが
「たのしく学ぼう!」は楽しく理解できる内容で
こちらは余計な表現は省いている硬派な文体ですね。
そのため反ってサクサク理解していけるのですが
皆さんどうでしょうか。
245:デフォルトの名無しさん
17/04/02 19:10:13.29 y9d2jD+G.net
>>242
分かる。ノイズが多い本は理解を妨げる面があるよな。
246:デフォルトの名無しさん
17/04/02 19:17:33.68 W6VXUIjv.net
ノイズが多い本……land of lispかな?
247:デフォルトの名無しさん
17/04/03 17:43:18.72 n+rAkf5b.net
軽妙な喩えならいいんだがセンスない人がやると惨憺コース
248:デフォルトの名無しさん
17/04/03 18:24:45.70 Qx3jr0sY.net
H本に影響を受けて書かれたE本はセンスないし痛々しいしで読むのが辛かった
変な色気出して慣れないことをしないでくれ
249:デフォルトの名無しさん
17/04/03 20:16:55.66 uUmwarja.net
>>244
Land of Lisp は何故か許せる
250:デフォルトの名無しさん
17/04/03 22:01:45.88 cuuaF505.net
ノイズじゃなくて冗長性だろ。
冗長性が多いほど失った記憶を復元しやすいから覚えやすいんだぞ。
そんなことも知らないのか馬鹿だなぁ。
251:デフォルトの名無しさん
17/04/03 22:37:33.25 uw3ZIsiG.net
暗記法かな?
252:デフォルトの名無しさん
17/04/04 01:02:45.85 Zl9hd3NS.net
ラノベじゃないんだ。インクと紙の無駄遣いは止してくれ
253:デフォルトの名無しさん
17/04/07 19:19:25.31 sbHW0sIW.net
ラノベで気軽にHaskellを覚えられたらいいんだけどな
254:デフォルトの名無しさん
17/04/07 20:38:50.80 hQkI4asK.net
むしろHaskelでラノベ全文を書いたらいいんだけどな
255:デフォルトの名無しさん
17/04/07 20:56:28.47 lfhJbqMl.net
>>251
「Haskellを覚える」の意味が分からん
Haskellの何が覚えられないんだ?
文法一覧表とか入門書をいちいち見ないとコーディングできないとか?
それなら、たとえラノベに分かり易く書かれていようと、読むだけじゃ憶えられんぞ
256:デフォルトの名無しさん
17/04/07 21:28:25.18 TruQxjxN.net
英語で遠回りして結局覚えられない奴
257:デフォルトの名無しさん
17/04/07 21:40:36.27 aTgPduXz.net
Haskellをというか、ライブラリの便利な使い方を覚えるってことかな
ライブラリの型シグネチャとチョロチョロっとした英語の説明読んで、想像力働かせて『これは今までの処理がこうこう、こういう書き方でできるようになって便利ですね』と理解するのが難しい
<* や *> のパーサーでの使い方(認識だけして捨てる)を知った時はアハ体験だった
こういうのをドキュメント読んだだけで気付くということができない
258:デフォルトの名無しさん
17/04/07 21:44:12.76 aTgPduXz.net
基礎ライブラリは抽象的なので、そこから応用的具象化を想像する能力が足りない
初めてApplicativeのドキュメントを読んでその有用性に気付く奴はIQ高過ぎだろ
頭がpureだった俺は戦意喪失したものだよ
259:デフォルトの名無しさん
17/04/07 21:57:17.10 oAg/9XNg.net
誰かHaskellで萌える関数型プログラミング入門書いてくれ。
260:デフォルトの名無しさん
17/04/07 22:45:53.56 961Byv/H.net
>>257
本当に買ってくれるのか?
買ってくれるならKindleで出すかな
261:デフォルトの名無しさん
17/04/07 23:09:24.70 lfhJbqMl.net
>>255
ライブラリドキュメントを眺めていて、どんな使い方ができるんだろと想像するのは、そりゃ難しいよ。
それはドキュメントの使い方を間違っていると思う。
俺はアプリケーションを作っている時、
1. こういう引数からこういう結果になる関数が欲しい
2. 1の計算を分解すると A、B、C という計算の組み合わせになりそうだ
3. A、B、C を計算する関数をすでに誰か作っていないだろうか?
という順に考えて、A、B、C をドキュメントから探す、という使い方をしてる。
*> の例なら、誰かがパーサーで認識だけして捨てるのに使�
262:チているのを見てアハ体験をするのではない。 そうじゃなくて、初めにパーサーを作っていて認識だけして捨てたいという欲求が湧いてきて、 じゃあどうするかと考えた時に、まず「認識だけして捨てる」とはどういう計算なのかを分析する。 そうして事の本質を捉えてからドキュメントから求めるものを探す。 その時、たまたま既にパーサーの構造を Applicative で表現していれば、 ドキュメントの Control.Applicative モジュールの項を真っ先に探して *> を見つけるだろうし、 別の方法で実装していれば、実現する関数はライブラリには無さそうだなと諦めて自作するかも知れない。 何れにしてもアハ体験の出番はない。 言っておくが、アハ体験が悪いわけではないぞ。 他人の解説やソースコードを見て、そういう使い方もできるのかと学ぶ事は大事だ。 ただ、ドキュメントをそのように使うのは違うだろ、つまり(ライブラリ)ドキュメントは 解説書でも読み物でもないだろ、と言いたいんだ。
263:デフォルトの名無しさん
17/04/07 23:36:42.37 +bl73oc8.net
本来であれば入門編は有用性ではなく単相型の欠陥に気付かせるべきなんだよ
VectorInt型とかVectorChar型とか再発明を繰り返すループに気付け
その後でパラメータ多相編とアドホック多相編をやるべき
264:デフォルトの名無しさん
17/04/08 01:14:10.72 7QsPN9bB.net
>>258
買う買う。
265:デフォルトの名無しさん
17/04/08 20:59:41.01 gcfXcmks.net
>>258
かうぞー!
266:デフォルトの名無しさん
17/04/09 00:41:02.14 jUVd4dkj.net
萌は興味を引かせる手段にはなれても、理解を深める手段にはなれんよ
267:デフォルトの名無しさん
17/04/09 01:31:48.04 cVuKvPJL.net
Kindleで、標準ライブラリの一つにつき一冊かけて特集した本を電子書籍で出して
抽象的な基礎ライブラリはその応用可能性をねっとりと絡み付くまでに例示して
268:デフォルトの名無しさん
17/04/09 01:36:18.18 xs3hgIsU.net
いいっすね読んでみたい
GitBookあたりで無料で
269:デフォルトの名無しさん
17/04/09 06:15:21.14 bWQLB/aV.net
HaskellはHOW TO本が少な過ぎる
写経するだけでサクッと実用アプリを作れるような本が欲しいよね
IOが七章や八章から登場する入門書とか
Haskellを普及させる気ねぇだろw
270:デフォルトの名無しさん
17/04/09 11:16:11.13 6mlbYxYb.net
>>266
他言語でもそんな本は無いんじゃないか?
「サクッと」と「実用」がどんなレベルか知らんけど。
一応 Beginning Haskell が Web 系で実用的で、
入門者がアプリケーションを作るまでを指導してくれるが、洋書だ。
271:デフォルトの名無しさん
17/04/09 13:25:40.09 k7pBYoHG.net
Pythonなんかは
サンプルコードを書き書きしてるだけで
機械学習が出来ちゃう本なんかが出てるね
272:デフォルトの名無しさん
17/04/09 14:32:15.66 h7Zssp3Z.net
Haskellでエロイベント満載の
エロゲーを作る入門書が欲しい
273:デフォルトの名無しさん
17/04/09 22:07:49.23 iyanZMWu.net
Haskellってゲーム創るのに向いてるの?
274:デフォルトの名無しさん
17/04/10 00:42:05.83 6CfyD+kA.net
エロゲー作るのに大事なのはエロ絵だけ、プログラミング言語なんて全く関係ない
275:デフォルトの名無しさん
17/04/10 01:04:16.20 rMcgJXKg.net
圧縮した画像を取り出したりするのはC言語だと思う
他の言語を混ぜても、小規模ならC言語の占める割合が高い
だから他の言語はスケーラビリティがーと言って大規模化しようとする
276:デフォルトの名無しさん
17/04/10 02:02:19.00 U7/Um2af.net
C言語開発はストレスで禿げるから嫌だ
居玉で横歩取りするような将棋は嫌だ
277:デフォルトの名無しさん
17/04/10 03:00:41.47 IhGuSZfb.net
>>270
モナディウスあるから作れないことはないけど、C/C++のが向いてる。
Haskellに限らずJavaやC#みたいなGC使ってるのはタイミングがシビアなゲームには向かない。
(やるとしても場面切り替えのタイミングまでGC止めたりと、工夫が必要)
シビアじゃないゲームならUnityの公式言語だったり、PS VitaのSDKもC#だし、ゲームプラットフォームの選択肢多いC#じゃね?
278:デフォルトの名無しさん
17/04/10 03:05:43.30 Zvy/cqZx.net
とはいえ今時ゲームというばスマホだから
スマホ対応の難しい言語は論外だろうな
279:デフォルトの名無しさん
17/04/10 03:14:10.80 IhGuSZfb.net
ゲームとは言わんが、Haskellでスマフォアプリ作れたらなぁ。。。
Webアプリを作って、URLをスマフォの画面に置くのが関の山だろう。
Yesod本の和訳早よ。
280:デフォルトの名無しさん
17/04/10 03:52:14.23 mPsedSNt.net
同系統の言語のCleanはIDEに標準で付いてくるサンプルに
2D横スクロールアクションみたいなゲームとかTCPとかあるから
そっち使うとかは?
281:デフォルトの名無しさん
17/04/10 03:58:17.94 U7/Um2af.net
Androidで動くHaskellの話はどうなったの?
282:デフォルトの名無しさん
17/04/10 05:18:31.19 t1irNdwQ.net
どの言語でも無理矢理Androidで動かす狂人はいるけど
実用性はというと・・・お察しください
283:デフォルトの名無しさん
17/04/10 08:42:46.72 qzcpQwFo.net
>>271
声優だって大事
284:デフォルトの名無しさん
17/04/10 11:21:56.58 QIjIFLSF.net
purescriptとりあえず入れてみたけど、コンパイラしかないのな
285:デフォルトの名無しさん
17/04/10 21:28:48.23 490JO927.net
arrayの要素数を型に含めることはできないの?
それがあれば、行列の積とかで便利だと思うんだけど
オレ頭が悪いんで言っている意味が分からないかな…
286:デフォルトの名無しさん
17/04/10 21:55:22.44 CykROrgz.net
Dependent Typeで検索
287:デフォルトの名無しさん
17/04/10 23:31:00.56 hsDcS7Wy.net
JVMで動くHaskellことFregeは最近どうなっているのか
288:デフォルトの名無しさん
17/04/11 00:12:08.28 jIIzMyke.net
Haskell風AltJSのベンチマーク - Qiita
URLリンク(qiita.com)
ブラウザゲーム作るにはまだまだなのかな
289:デフォルトの名無しさん
17/04/11 00:13:19.38 rtc8M2j0.net
>>282
要素数2 Bool -> Double
要素数3 Either Bool () -> Double
要素数4 (Bool, Bool) -> Double
290:デフォルトの名無しさん
17/04/11 00:40:49.07 ErICxElM.net
仮想機械上にランタイムシステムを敷いて、さらにその上で動かすの?
……遅そう
291:デフォルトの名無しさん
17/04/12 23:48:48.59 BfJ17y0b.net
>>259
>事の本質を捉えてからドキュメントから求めるものを探す。
この能力を身につけられるHaskell本はありますか?
292:デフォルトの名無しさん
17/04/12 23:59:29.26 QF962/+T.net
>>288
それはHaskellプログラマに特有の能力じゃないし、
他言語のプログラマよりも特に優れている訳でもないから、
Haskell本に求めても無駄。
強いて挙げれば「珠玉のアルゴリズムデザイン」。
でも、もっと他の本を読んで実践した方がいい。
例えば「いかにして問題を解くか」シリーズ。
293:デフォルトの名無しさん
17/04/13 00:17:54.59 tWZEhHcW.net
Haskellは数学だから基本は数学本に丸投げだよな
しかしλとか∀とか真面目に説明した数学本は見たことがない
294:デフォルトの名無しさん
17/04/13 02:17:21.29 jvdUllVk.net
>>290
知らんだけだな
295:デフォルトの名無しさん
17/04/13 02:32:00.36 WRWoTzYv.net
数学の裏付けで支えられてる言語って安心感ある
誰しも学習に費やした時間を反故にしたくないのだ
つぶしが利く共通項目を辿って成長していきたい
296:デフォルトの名無しさん
17/04/13 06:59:19.11 m/ZfxtWH.net
>>288
むしろそれはプログラマに必須の能力。
Haskellは普通の言語でそれが見えない人にも見える様にしてくれる。
(普通の言語ではプログラマになれなかった人でもプログラマになれるかも知れない言語)
本としてはHaskell本じゃ無いが、プログラミングinOcamlが良かった。
その後にプログラミングHaskell読むと良い。
どうしてもモナド理解したかったらすごいH本も読む。
CやJavaでマージソートのコード読んでも何やってるのか分からんかったが、Haskellだと初心者向けのアルゴリズム本で、マージソートとはこう言う動きをするソートって図解を読んで、自分で書けた。
今にして思えば、他の言語のアルゴリズム本はソートがリスト前提なのに配列でいきなり作るから分かりにくいって気付いたが。
リストで作って、遅いから配列にしたい。
どう書く?みたいな書き方なら他の言語でも分かりやすいのに。
297:デフォルトの名無しさん
17/04/13 11:10:39.92 tWZEhHcW.net
>>292
残念ながら時間が無駄になる確率は0ではない
0が良いというのは数学とは関係ない人間の願望
298:デフォルトの名無しさん
17/04/15 17:32:06.76 JvKdzHxp.net
数学の分からん馬鹿の多い板だな
299: ◆QZaw55cn4c
17/04/15 18:41:55.91 4n/qWi8y.net
>>293
C/Java のソートはインプレイスであることが優先されるからね
300:デフォルトの名無しさん
17/04/18 05:20:40.72 MjkxKRKp.net
キャッチコピーすごいw
Haskellの美しさを
知っている人は、
人生に絶望することはない。
Haskellで世界を変えたい。
URLリンク(www.shuwasystem.co.jp)
301:デフォルトの名無しさん
17/04/18 05:48:02.94 xmEJeblZ.net
Haskellを学ぶことによりC++の凄さを知りました
302:デフォルトの名無しさん
17/04/18 08:09:34.88 aKjw+TWL.net
ちょっとオカルトチックにするのやめて
またHaskell馬鹿にされるじゃん
303:デフォルトの名無しさん
17/04/18 09:21:24.08 YlfHEX7H.net
その本めくってみたけど基本的な言語機能を延々噛み砕いて説明してるだけのバカが崇めるためにあるような本だった
インテリアに最適
304:デフォルトの名無しさん
17/04/18 09:45:04.79 zekwtXkL.net
プログラミング言語を国家か何かのように考えてるやつはみんなオカルト
それをやめさせることができたらノーベル平和賞を取れる
305:デフォルトの名無しさん
17/04/18 10:44:46.76 aKjw+TWL.net
Haskellは単なる科学であり魔術でも宗教でもない。余計な飾りは要らない。ただただ成果を出せばよい
というわけでHaskellの成果を挙げて
306:デフォルトの名無しさん
17/04/18 18:17:01.21 cdFptP3+.net
>>302
> Haskellは単なる科学であり魔術でも宗教でもない。余計な飾りは要らない。ただただ成果を出せばよい
正確に言えば「Haskellは単なる技術であり」だな
科学の主たる目的は真理の探究、社会に価値を生み出す(または価値を増加させたり価値の増加を容易にする
307:)のは技術 個々のプログラミング言語、特に実用を目指している言語、は 言語に関する様々な理論(構文の理論や意味論などで、これらは自然科学ではないが数学という科学…形式哲学とでも呼ぶべきもの…の一分野の成果)の 適用としてより「容易にプログラムを書ける」とか「よりバグの発生する可能性を減らす」といった現世的な御利益つまり価値の増大や創造を求めたものだから > というわけでHaskellの成果を挙げて うん、技術的成果としてのプログラミング言語に対して、この要請は実に適切だね
308:デフォルトの名無しさん
17/04/18 20:45:33.32 +2Ki/5Wl.net
あのスレの次スレが立ってないからってこっちくるのはヤメレ
309:デフォルトの名無しさん
17/04/20 11:33:28.13 UeCe6jDz.net
成果出まくりのC/C++はどちらかというと嫌われ者なので
C/C++の成果をどうやって否定しようかと知恵を絞っているのが現実
成果主義は机上の空論
310:デフォルトの名無しさん
17/04/20 14:02:32.75 3rvpL7hF.net
HaskellはC++に挑む気はなさそう(代わりにRustが挑んでそう)
Haskellの相手は頑張ってJavaでしょ
Javaクラスのパフォーマンスを少ない労力でパパッと実現みたいな
一応ネイティブで動くみたいだがランタイムシステムの監督の元だし、このランタイムシステムの効率ってのが怪しい
ガベコレ技術なんかJavaのそれに何周も遅れとってそうだし
参照透明だと最適化かけ易いって? 最適化の研究進んでるの?
311:デフォルトの名無しさん
17/04/20 15:34:20.89 zhxiAG0o.net
>>306
確かにGHCはあまり性能を追求しないね。
Haskell、OCaml、RacketでGCのレイテンシを測る
URLリンク(postd.cc)
>Haskell:ワーストケースの停止時間は51ミリ秒
>OCaml:多くの停止時間は220マイクロ秒から1ミリ秒の間で、最長は2.7ミリ秒
312:デフォルトの名無しさん
17/04/20 23:42:51.61 bRzOMROq.net
haskellをdisるスレ
313:デフォルトの名無しさん
17/04/21 15:08:22.39 FrhbrHvt.net
>>307
OCamlは性能★だけ★が売りだから速くて当然
元祖MLの醜い構文を正しモジュールに関連する諸機能を追加したのがStandard MLで
元祖MLを生み出したRobin Milner自身もStandard MLに入れ込んでいた
(Standard MLのformal semanticsの定義書とかまでMIT Pressから出版したしね)
ところがフランスINRIAの連中がMilnerやPaulsonらイギリスのStandard MLグループに対抗して
昔のMLの醜い構文のまま言語をオブジェクト指向へと拡張して作ったのがOCaml
でっ、実行性能の差で生き残ったのはOCaml
お蔭でMLはグチャグチャでグロテスクな構文のほうが生き残ってしまいましたとさ
だからOCamlは実行性能だけは良くて当然なんだよ、だってそれだけでML界の競争を生き残って来たんだから
314:デフォルトの名無しさん
17/04/26 18:54:44.10 tyKqE9/b.net
Haskellで書かれた日本人作のゲーム、Steamで販売されてる
URLリンク(store.steampowered.com)
315:デフォルトの名無しさん
17/04/27 14:26:27.43 7iFRDQtz.net
うぉおおおおおお
316:デフォルトの名無しさん
17/04/27 16:50:12.06 YJ6E48rA.net
『教養としての関数型プログラミングHaskell』とかいう分厚い本どうなの
317:デフォルトの名無しさん
17/04/27 16:53:18.87 j4z9g1Hc.net
高価なウンコと聞いた
318:デフォルトの名無しさん
17/04/27 18:37:54.82 dGEnPbzp.net
読んでないが筆者の名前はhackageでよく目にする
謎のオレオレライブラリを作るのが好きな人という印象だ
URLリンク(hackage.haskell.org)
319:デフォルトの名無しさん
17/04/27 21:51:28.67 fwPw5Zvz.net
ステマか?
320:デフォルトの名無しさん
17/04/27 22:06:53.42 YJ6E48rA.net
いや純粋に黒くて大きくて書店で異様な存在感を放ってたので気になったんだけどウンコだったのか
321:デフォルトの名無しさん
17/04/27 22:20:40.24 lNlBSSzH.net
>>313
Amazonレビューにキツめのがついてたわ
322:デフォルトの名無しさん
17/04/27 22:23:13.42 lNlBSSzH.net
秀○システムは毛の壁本出してしまうという暴挙以来どうもイメージが悪くてな……
323:デフォルトの名無しさん
17/04/27 23:09:35.55 Koc4MigP.net
タイトルからは計算論やらラムダ計算関係の知識を教えてくれそうな内容に見えるけど、
レビューや内容紹介を見ると「Haskell学習」とかなら良かったんじゃないかな?
と内容も見もせずに思いましたマル
324:デフォルトの名無しさん
17/04/28 00:28:50.88 YlIU0bJf.net
初心者向けにStackの使いこなし、チュートリアルとか書いた方が喜ばれたね。
325:デフォルトの名無しさん
17/04/28 00:38:53.42 vr010bnw.net
失望しました。代わりに Chris Okasaki 先生の純粋関数型データ構造買います
326:デフォルトの名無しさん
17/04/28 02:15:20.57 smx773DP.net
>>321
純粋関数型データ構造
URLリンク(www.amazon.co.jp)
"Purely Functional Data Structures" の邦訳『純粋関数型データ構造』が発売されます
URLリンク(d.hatena.ne.jp)
関数型言語での最適を考える:純粋関数型データ構造、Chris Okasaki
URLリンク(www.injpok.tokyo)
Edison
URLリンク(rwd.rdockins.name)
>Edison is a library of purely function data structures
>for Haskell originally written by Chris Okasaki.
327:デフォルトの名無しさん
17/04/28 03:02:15.51 1X+/xglb.net
関数型言語って pure が付くととたんにマニアックになるんだよなー
328:デフォルトの名無しさん
17/04/28 09:01:31.72 tDcdNy+k.net
それはオブジェクト指向も同じっしょ。
329:デフォルトの名無しさん
17/04/28 09:57:15.79 1X+/xglb.net
あ、ホントだ
でも純粋関数型言語って 1とか2とかの数値や、
true/falseのbool値すら関数(ラムダ式)として表現するやつとかあるよね
マニアックが極まってるというか
330:デフォルトの名無しさん
17/04/28 10:02:36.98 MOddalxm.net
それは関数型言語なら純粋じゃ無くてもそうだが。。。
331:デフォルトの名無しさん
17/04/28 13:28:31.27 1X+/xglb.net
ごめん
15年以上前のうろ覚えのラムダ計算の知識しかないんだけど、
1 とかの基本型をチャーチ数のようなラムダ式で表す体系は
型なしラムダ計算でしかなりたたなくて、
型付きのラムダ計算は自然数などの基本型はラムダ式では表せないんじゃなかったっけ?
332:デフォルトの名無しさん
17/04/28 14:57:12.95 MOddalxm.net
うーむ。。。
まず左結合のチャーチ数をどうやって右結合のラムダ式で表現するんだろう?とか、色々イメージが掴めん。。。
確かに整数型は整数としか計算出来ないけど、型変数とかだったらズルイかもだけど行けそう。
私もそんな話は昔読んだ気がするんだが。。。
詳しい人を待ちますかね。
チャーチ数そのものは代数的型で簡単に実現出来るけど、そう言うのじゃないんだよね?
333:デフォルトの名無しさん
17/04/28 19:46:38.88 G+dyZ5vN.net
適切な抽象化があれば値がどうやって表されるかなんてどうでもいいよ
334:デフォルトの名無しさん
17/04/28 23:29:10.15 2Q0thsFc.net
関数言語得意なお前らlazy Kとかunlambdaとか得意そう
335:デフォルトの名無しさん
17/04/28 23:38:48.37 2Q0thsFc.net
正直言ってこういうのサッパリ分からん
ラムダ計算で代数的データ型を表現する方法 - @syamino はてなダイアリー
URLリンク(d.hatena.ne.jp)
336:デフォルトの名無しさん
17/04/29 07:20:37.24 dRkpt71/.net
もはやHaskell関係ないって言いたいところだけど
そう言えばチャーチエンコーディングってfoldr/buildそのものだな
337:デフォルトの名無しさん
17/04/29 09:08:18.51 /ij5EOcX.net
アプリ作る話は一切出てこない
338:デフォルトの名無しさん
17/04/29 10:11:28.20 nyANDfpK.net
Jpegの何バイトめから何バイトがどんな情報とかの仕様教えてくれたら頑張ってみるよ。
テキストなら割と扱えるんだけど、バイナリはデータ構造知らんと何とも。。。
こう言うところでプログラマーになれんかった。
339:デフォルトの名無しさん
17/04/29 10:28:52.14 5gNjoiIm.net
圧縮なんてしない方がアプリを早く作れるよ
GUIも使わない方が早く作れる
それで素早く作ったアプリは原始的なので人に見せない
科学が発達すればするほど最先端に追いつくまでの時間は長くなる
340:デフォルトの名無しさん
17/04/29 10:38:06.28 y9k82SwL.net
GUI使わないプログラム普段おまえら使うのか
いったい何をやっているんだ
科学計算は日常系でないからなしな
341:デフォルトの名無しさん
17/04/29 11:24:38.37 ml8UsgdM.net
プログラムの世界でGUI依存なんて基本的に羞恥なんだが素人かな
342:デフォルトの名無しさん
17/04/29 11:26:25.86 nyANDfpK.net
おいらはプログラマーの道をすっぱり諦めたから、当時一番気に入ったHaskellの残留思念だけで書きこんでる。
写真がプログラミング以上に楽しいから、Jpeg弄れるライブラリあったら触ってもいいかな。
HaskellでGUIと言えば、MSがHaskell+WXでGUIのサンプルをpdf(英語)で公開してから、海外のHaskellerは軒並みWX使ってるっぽい。
おいらの時はRWHにgtk2hsが載ってたからそれにしたけど、MSのpdf読む限りWXのがコード短い。。。
RWH恨むぞ。。。
343:デフォルトの名無しさん
17/04/29 11:26:31.41 fkqPQF0T.net
素人に売りつけるソフトにGUIは不可欠
344:デフォルトの名無しさん
17/04/29 13:06:45.39 dPKXkep6.net
アーキテクチャの話も一切出てこない
俺達は汎用プログラミング言語でいったい何をしているのか
345:デフォルトの名無しさん
17/04/29 15:22:04.96 nyANDfpK.net
デザパタみたいなの?
パターンって程実践で使われてないだろ。
んー。。。
使ってた感触だと、割と行き当たりばったりからの仕様変更でも何とかなるのが関数型言語の強み?と思わなくも無い。
ちょっとの変更にも関数経由するから、自然と既存の関数使い回せないか考えるし、関数型言語もそう言う風に進化して行ってるように感じる。
某スレで話題になったキャットドアクラスも、変な縛りがなければ究極的には機能の組み合わせでドアが開くかどうかの問題なのだから、タプルにBoolを並べれば良い。
ただ、同じBool値ばかりだと違う機能を付いてる(付いてない)と表現しやすいので、適当な型を作ってコンパイラが順番間違えたらエラー出すようにする。
cd = (False,型Aの値)
値が欲しかったら
getA t = snd t
または引数の時点で直接欲しい値にアクセス。
getA (_,x) = x
仕様の拡張に関してはタプルを入れ子にする事とする。
継承というよりは委譲に近い。
理屈では(以前の機能,拡張機能)の形でいくらでも入れ子に出来る。
cdEx = (cd,型Cの値,型Dの値)
cdFX = (cdEx,型Eの値)
基本機能だけなら基本のタプル取り出して使う。
getA $ fst cdEx
拡張機能だけまたは、拡張機能と基本機能の組み合わせは引数の時点で(以下略)
getC (_,x,_) = x
getAD ((_,x),_,y) = x + y
ただ、関数型言語は元々多くの状態を管理するのに向かない。
例の通り、構造が複雑になると扱い難い。
HTMLなりXMLなりXAMLなりに状態管理は任せた方がいい。
んじゃ、おいら夜勤明けなんで寝るわ。
お休みzzz...
346:デフォルトの名無しさん
17/04/29 15:49:01.36 23KWF3U2.net
科学計算が日常じゃないってマジ?
347:デフォルトの名無しさん
17/04/29 16:12:38.77 dPKXkep6.net
しかし多くの状態を楽に管理できなきゃ、
ゲームも商支援系ソフトもクリエイター系ソフトも何もまともに作れん
作れたとしても、後のメンテが辛くなるコードが出来上がる
向いているのは自身で状態を維持変化しなくてもいいような、
フィルターとしてモデリングできるものしかなくなる
たとえば linux の簡単なコマンドや web アプリ、FX自動取引システムくらいか
処理速度の問題は実用的にはほとんど気にならないレベルだと思うし、
メモリリークの問題はそれがHaskellだから諦めて、せいぜい気をつけろと言える
が、状態管理のしにくさは、これが解決すれば
爆発的にユーザーが増えそうなだけに、何か発明がほしいな
348:デフォルトの名無しさん
17/04/29 20:54:16.08 5gNjoiIm.net
抽象的な状態遷移はできるでしょ
ただ具体的な現実の状態を忠実に再現しろと言われるとよくわからない
忠実さを競う意味がわからない
349:デフォルトの名無しさん
17/04/29 22:50:14.03 nyANDfpK.net
おはー。
そこよな。
IORefとかで状態管理出来るけど、それだとデフォルト引数とかある普通の言語の方が楽。
どっちかと言えばWebプログラミングみたいにHTMLやDBに状態持ってもらって、ここの項目をこう加工したいって時だけHaskell的なのが良いと思う。
奇しくもMVCとかMVVMのモデル。
キャットドア問題みたいなのは問題自体の使いどころが判らん。
おいらは問題を解決したいのであってクラスを作りたいんじゃ無い。
オブジェクト指向でなぜ作るのかって本のジャンケンを一対一から多人数に拡張みたいなのが問題として本質を突いてると思う。
本当の仕様変更って、一旦根本から考え直さないといけない事があって、解決したいのはそこだからね。
オブジェクト指向だと、結局一旦全部壊してクラスで表現して解決。
関数型言語だと一旦バラしてリストとか加えて使い回せるのは使い回�
350:キ。
351:デフォルトの名無しさん
17/04/30 00:00:51.50 qmSAdND7.net
関数型を選択することで、あるレベル以上の密結合を完全に禁止できる??
352:デフォルトの名無しさん
17/04/30 00:09:16.78 mJmGYhZX.net
>>346
禁止と言うのが、言語仕様としてコンパイラに弾かれるという意味なら、禁止にはできない。
そもそも、結合度と関数型とは何も関係ない。
353:デフォルトの名無しさん
17/04/30 00:24:21.53 SbBDypWI.net
そんな大規模なの作った事ないけど、少なくともクラスみたいにデータと手続きが密接に関係してるものよりは使い回しが効くよ。
ただ、それは関数型言語だからって訳じゃないと思う。
Cがグローバル変数の問題解決して、ジェネリック(テンプレート)導入すればそれで済む。
Goが一番それに近いのかな?(でもジェネリック無いんだよな。。。)
関数型言語はグローバル変数が読み込み専用で、問題になり難いから解決し易かっただけ。
私は文法の美しさでHaskellに惚れてるだけで、Haskellが絶対の解では無いと思ってる。
手続き型にはデフォルト引数とか、メッセージ引数と言う、引数の数や順番を減らしたり入れ替えても問題無い仕組みがある。
それぞれのメリット/デメリットをうまく組み合わせれば良い。
354:デフォルトの名無しさん
17/05/01 08:17:07.40 L9owkeUM.net
正の整数が1万個格納されたリストAの中に偶数が2個以上あるか調べたいです
手続き型だとcount=0みたいな変数を用意してループを回してcountが2になったらループを打ち切るという形になると思うのですが、
haskellだとどう書けばいいでしょうか?
filterしてから数を数えることも考えたのですがそれだと2つ見つかってからも処理が続くので少し非効率的な気がしてます
初歩的な質問で申し訳ありませんがご教授いただければ幸いです
355:デフォルトの名無しさん
17/05/01 09:22:52.54 muUl2D49.net
>>349
haskellは遅延評価だからtakeとfilterで無駄なループしない
length . take 2 $ filter even [1..]
356:デフォルトの名無しさん
17/05/01 09:38:09.96 TrluKRLJ.net
その手続き型でのカウンタ変数を蓄積引数にするだけ
solve = solve' 0
where
solve' 2 _ = True
solve' _ [] = False
solve' n (x:xs) = solve' (if even x then (n+1) else n) xs
main = print $ solve [1,3..1000001]
357:デフォルトの名無しさん
17/05/01 11:06:48.65 d2LalM1x.net
>>350
>>351
なるほど…ありがとうございます
どうしても手続き型の考え方に引っ張られてしまってダメですね
精進します
358:デフォルトの名無しさん
17/05/01 11:18:51.46 XSKy6kSK.net
遅延評価が必ずループを打ち切る保証はない
length (repeat ()) >= length [] --> ⊥
longer (repeat ()) [] --> True
longer [] _ = False
longer (_:a) (_:b) = longer a b
longer _ _ = True
359:デフォルトの名無しさん
17/05/01 11:46:14.32 y6q+iQAV.net
遅延評価だからtake 2で必ず評価止まるわ
360:デフォルトの名無しさん
17/05/01 11:52:30.52 IaTjJD59.net
入力が無限でその中にevenがなけりゃtakeでも止まんないっしょ
361:デフォルトの名無しさん
17/05/01 12:35:32.98 CeQn+bFS.net
さすがにその指摘は意味ないと思うけど
362:デフォルトの名無しさん
17/05/01 13:23:37.16 XSKy6kSK.net
でも人間にとって無意味な手をコツコツ打って勝つ戦略って最近の人工知能がやりそうだ
363:デフォルトの名無しさん
17/05/01 14:06:36.95 muUl2D49.net
>>355
そんな例だと遅延評価関係なく解決不可能だろう
364:デフォルトの名無しさん
17/05/01 15:43:00.00 YV6k5aHw.net
むしろ止まらないのが正常な振る舞いだと思うの
365:デフォルトの名無しさん
17/05/01 17:46:12.38 QnncI6PA.net
>>355
ちゃんと1万個って言ってるのに、どうして自分の都合の良いように前提条件変えちゃうの?
人の話聞こうよ! ゾイゾイ言ってないでさあ!
366:デフォルトの名無しさん
17/05/01 23:03:54.91 PiVFXFTP.net
1まんこ
367:デフォルトの名無しさん
17/05/02 01:06:52.67 98ZJhHZq.net
型でガッチガチに固めてコンパイルエラーで危険なコード通すの阻止してくる関数型言語の姿勢ってフールプルーフ?
368:デフォルトの名無しさん
17/05/02 07:41:56.01 kHyZ6XSn.net
>>360
草ァ!
369:デフォルトの名無しさん
17/05/02 10:12:37.54 HGZvLmNR.net
>>360
ゾイ!!!!!!!!!
370:デフォルトの名無しさん
17/05/03 16:56:36.78 8xTy/mbt.net
ハスケルの発音はどこにイントネーションを置けばいいですか?
371:デフォルトの名無しさん
17/05/03 17:08:16.15 j+V3ZaYg.net
はぁすくぅ
372:デフォルトの名無しさん
17/05/03 17:25:56.12 YQuBqP26.net
ハースニールと呼んであげて
373:デフォルトの名無しさん
17/05/03 17:34:41.80 3CkyOJSn.net
>>366
「haskell pronounce」でググれば簡単に
URLリンク(wiki.haskell.org)
に行き着く。
そうすれば、
URLリンク(mail.haskell.org)
に案内され、疑問が解消されるはずだ。
374:デフォルトの名無しさん
17/05/03 19:23:38.05 evrxvkuv.net
はあすこぅ
375:デフォルトの名無しさん
17/05/03 23:04:12.27 1Ttf2z2u.net
Cabal ケバール
376:デフォルトの名無しさん
17/05/03 23:21:41.48 mJ/QVcTI.net
ghcよりcabalより先にstackを入れる。
377:デフォルトの名無しさん
17/05/04 00:29:46.99 M/Hnicnq.net
YouTubeをhaskellで検索かけりゃいくらでも聞けるだろ
378:デフォルトの名無しさん
17/05/04 03:31:51.49 gAUNCpWB.net
haskellでキーボードから入力した値をそのまま出力する場合、必ず
n <- getLine
putStrLn n
のように一旦変数に束縛する必要がありますか?
一行では書けないのでしょうか
379:デフォルトの名無しさん
17/05/04 03:52:33.18 0GlJDnqX.net
main = getLine >>= putStrLn
380:デフォルトの名無しさん
17/05/04 03:55:26.58 gAUNCpWB.net
>>374
ありがとうございます
381:デフォルトの名無しさん
17/05/04 04:12:42.09 0GlJDnqX.net
ちなみに
main = do
____n <- getLine
____puStrLn n
と
main = getLine >>= \n -> putStrLn n
と
main = getLine >>= putStrLn
は、等価。
do形式はモナド形式を手続き型っぽく見せる糖衣構文に過ぎない。
最後のはモナド形式とカリー化を利用した部分的用で見た目の変数を無くしただけ。
モナド形式だとプログラム全体が一つの式だと言うのが良く分かる。
382:デフォルトの名無しさん
17/05/04 05:28:10.40 DGL+h71J.net
___n は誤解を招く
_korehaTsukaimasen
383:デフォルトの名無しさん
17/05/04 06:57:02.33 M/Hnicnq.net
getLine >>= putStrLn じゃなくて interact はダメなん?
384:デフォルトの名無しさん
17/05/04 12:19:44.49 xtfIuMNG.net
そもそも、getLineは1行しか読まないしな
385:デフォルトの名無しさん
17/05/04 14:29:46.30 gUFA1lSr.net
>>378
interactは変数に束縛してごにょごにょする処理を隠蔽してるだけだから
「必ず一旦変数に束縛する必要がありますか?」の答えとしては若干嘘かも
386:デフォルトの名無しさん
17/05/04 16:34:00.03 UGR/WMPx.net
束縛ってコード(人間の視認性)レベルの話で、コンパイラが吐くバイナリではキャンセルされてるんじゃないの?
バインドで(ポイントフリーみたいに)やったのと変わらないようになってんじゃないの
387:デフォルトの名無しさん
17/05/05 21:55:20.21 9ig94Wv/.net
Haskell 教養としての関数型プログラミング 単行本 ? 2017/4/15
重城良国 (著)
URLリンク(www.amazon.co.jp)
824ページって超大作だな
Haskell本の決定版か?
388:デフォルトの名無しさん
17/05/05 21:56:45.82 9ig94Wv/.net
Haskellによる関数プログラミングの思考法 単行本 ? 2017/2/28
Richard Bird (著), 山下伸夫 (翻訳)
URLリンク(www.amazon.co.jp)
こっちはどうなのだろう?
感想求む
389:デフォルトの名無しさん
17/05/05 23:25:45.93 e6epJNrq.net
>>383
>>201
数独ができるようになるけど、ワイはすごい本の方が好きや
390:デフォルトの名無しさん
17/05/05 23:34:27.84 RNJ7gaAH.net
すごい本やない。
すごい「H」本や。
391:デフォルトの名無しさん
17/05/05 23:53:12.22 fZIf3DTG.net
初めてのCっぽくて好き
392:デフォルトの名無しさん
17/05/06 00:17:40.31 gZLP5YIG.net
getLineでコンソールから手動入力する時、バックスペースとかで修正出来ないのってhaskeline使う以外に何か方法無いのかな?
393:デフォルトの名無しさん
17/05/06 00:28:11.74 MHgXx5Es.net
rlwrapとか?
394:デフォルトの名無しさん
17/05/06 02:13:17.67 gZLP5YIG.net
うーん、そういうのじゃないな
395:デフォルトの名無しさん
17/05/06 18:51:05.79 smzwp1ku.net
Comonadでオブジェクト指向を実現できるって聞いたけどほんと?
396:デフォルトの名無しさん
17/05/06 23:14:55.28 6S4yhtdG.net
スレ違いかもしれませんが、2つのリストに一致する項目だけ抜き出したリストを作るみたいな問題があったとき、
集合論だと集合Aと集合Bの積集合A∩Bを求めるような解き方をすると思うのですが、Haskellのようにラムダ計算が
基になっている関数型言語だとそもそもの考え方や物の見方が違ったりするのでしょうか?
Haskellを学び始めたはいいんですが、結局他言語のパラダイムを無理やりHaskellに適用させているだけのような気がして不安です
397:デフォルトの名無しさん
17/05/07 01:09:26.23 875uFfQS.net
>>391
質問に答えるだけの知識を持ち合わせていないので一応コードだけ
intersect :: Eq a => [a] -> [a] -> [a]
intersect xs = filter (`elem` xs)
リスト内包表現でも書けるけど関数型っぽいのはこういう書き方なのかも