関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
http://www.haskell.org/
前スレ
関数型プログラミング言語Haskell Part28
http://echo.2ch.net/test/read.cgi/tech/1428597032/
探検
関数型プログラミング言語Haskell Part30 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/01/15(日) 23:43:54.28ID:Vh4eztBk
2017/01/21(土) 23:24:33.24ID:pbRX6RFT
2017/01/21(土) 23:51:49.78ID:Rj5My/0A
>>39
うーん、調べてみたけどわからなかった。
stack build --exec CMD でビルド後にドキュメントをコピーするか
stack build --haddock-arguments ARGS でstackからhaddockに渡るパスを上書きするとか
そういうのは思いついたけど、どっちにしても厳しいハックになると思う。
うーん、調べてみたけどわからなかった。
stack build --exec CMD でビルド後にドキュメントをコピーするか
stack build --haddock-arguments ARGS でstackからhaddockに渡るパスを上書きするとか
そういうのは思いついたけど、どっちにしても厳しいハックになると思う。
2017/01/22(日) 02:31:21.87ID:/vT6BoNb
なんでStringってshowするときに” “ が付くの?
ダブルクォートが付かない汎用的なshowは無いの?
ダブルクォートが付かない汎用的なshowは無いの?
43デフォルトの名無しさん
2017/01/22(日) 06:46:55.70ID:0MfM9wAO show使わなきゃいいだけじゃね
2017/01/22(日) 09:49:36.00ID:DE1XkK5k
2017/01/22(日) 11:16:36.00ID:8a05MHn2
実用上全く考えたこともなかったけど
show "ABC"
って
"\"ABC\""
って出力されるんだなwwwwウケる
show $ show "ABC"
"\"\"ABC\"\""
wwwwwwwwwww
show "ABC"
って
"\"ABC\""
って出力されるんだなwwwwウケる
show $ show "ABC"
"\"\"ABC\"\""
wwwwwwwwwww
2017/01/22(日) 12:04:32.12ID:+cEF+CqT
>>42
show 2 と show "2" が区別できないと困るじゃん
show 2 と show "2" が区別できないと困るじゃん
2017/01/22(日) 13:42:11.92ID:KAhPA/LR
>>42
どうしても欲しいなら作ればいい。
{-# LANGUAGE FlexibleInstances #-}
instance {-# OVERLAPPING #-} Show [Char] where show = id
どうしても欲しいなら作ればいい。
{-# LANGUAGE FlexibleInstances #-}
instance {-# OVERLAPPING #-} Show [Char] where show = id
48デフォルトの名無しさん
2017/01/22(日) 13:55:33.85ID:1WETee73 id = read . show にするためだゾ
49デフォルトの名無しさん
2017/01/22(日) 14:50:30.18ID:ppe8FoC9 >>19
強いHaskeller先輩「(・・・これC++で提出した方が早いな)」
強いHaskeller先輩「(・・・これC++で提出した方が早いな)」
2017/01/22(日) 18:20:13.46ID:TMVq9uWR
スペースリークの問題があってまともなコードには使えないというイメージを持ってるんだが
最近はその辺どうなってるのか知ってる?
自分はホームページ出力とかのメモリリークが問題にならないコードにhaskell使ってる
でもスペースリーク解決したらもっと色んなソフト開発に使ってみたい
最近はその辺どうなってるのか知ってる?
自分はホームページ出力とかのメモリリークが問題にならないコードにhaskell使ってる
でもスペースリーク解決したらもっと色んなソフト開発に使ってみたい
51デフォルトの名無しさん
2017/01/22(日) 19:13:53.53ID:0MfM9wAO >>49
haskell-masterことtanakhさん!
haskell-masterことtanakhさん!
2017/01/22(日) 20:48:57.10ID:2pJ85nMW
tanakhさんは最近はHaskellどころか競プロにRustで提出しだしてるよ…
tanakhさんはHaskellを見捨てたんだ…
tanakhさんはHaskellを見捨てたんだ…
53デフォルトの名無しさん
2017/01/22(日) 21:14:58.84ID:0MfM9wAO そもそもhaskell-masterと名乗って参加してたのがhaskell使えないTopCoderだったしなtanakhさん
2017/01/22(日) 21:43:58.70ID:LUcM/+lo
>>50
他の言語なら、いらなくなった変数にnullを代入することがスペースリークの解決策
nullを代入することには問題があるというイメージだったが
むしろ解決策じゃね?というイメージに最近変わった
その変化に貢献したのがHaskellだった
他の言語なら、いらなくなった変数にnullを代入することがスペースリークの解決策
nullを代入することには問題があるというイメージだったが
むしろ解決策じゃね?というイメージに最近変わった
その変化に貢献したのがHaskellだった
2017/01/22(日) 22:35:32.21ID:KAhPA/LR
>>50
あなたは何を以てスペースリークが解決されたと見なしてるの?
スペースリークを気にする必要がなくなった=解決なの?
もしそうなら、そんな未来は来ないと思う。
遅延評価を採用している以上、スペースリークは絶対に気にしなければならない。
あるヒープ領域がスペースリークなのかどうか、ランタイムシステムには判断できないんだから。
スペースリークなのかどうかがもっと調べやすくなる未来は来ると思うけどね。
あなたは何を以てスペースリークが解決されたと見なしてるの?
スペースリークを気にする必要がなくなった=解決なの?
もしそうなら、そんな未来は来ないと思う。
遅延評価を採用している以上、スペースリークは絶対に気にしなければならない。
あるヒープ領域がスペースリークなのかどうか、ランタイムシステムには判断できないんだから。
スペースリークなのかどうかがもっと調べやすくなる未来は来ると思うけどね。
2017/01/22(日) 23:37:17.44ID:LUcM/+lo
これに関しては遅延評価でも並列処理でも同じこと
処理が終わったらメモリ解放されるが途中で止まったら解放されない問題
処理が終わったらメモリ解放されるが途中で止まったら解放されない問題
2017/01/23(月) 08:47:48.02ID:z+XsKe69
昨日の50だけど具体的には
n=1000とか先頭で決め打ちしといてコード書くのは大丈夫でも
上限を与えられるようにするとリークするので大きなnを与えられなかったり
配列の読み書きのコードを逐一doブロックに書くのはokだったけど
<<=を使って書いたらスペースリークしたこともあるし
いちいちこれはリークするのかとか考えながらコードはかけないなと思った
haskellでproject euler 200問弱といたけどその間に思ったことだよ
えっこれがリーク?みたいなのがある
>>55
明確なスペースリーク対策のガイドラインができたらかなぁ
>>54
俺はあれはクソコードが、と思ってた
javaならweakreferenceを使うという手があって
だから最近のapiは進歩しててandroidならsetBackgroundDrawableが非推奨になって
setBackgroundをつかえみたいになってるnull代入しなくてよくなってるような
n=1000とか先頭で決め打ちしといてコード書くのは大丈夫でも
上限を与えられるようにするとリークするので大きなnを与えられなかったり
配列の読み書きのコードを逐一doブロックに書くのはokだったけど
<<=を使って書いたらスペースリークしたこともあるし
いちいちこれはリークするのかとか考えながらコードはかけないなと思った
haskellでproject euler 200問弱といたけどその間に思ったことだよ
えっこれがリーク?みたいなのがある
>>55
明確なスペースリーク対策のガイドラインができたらかなぁ
>>54
俺はあれはクソコードが、と思ってた
javaならweakreferenceを使うという手があって
だから最近のapiは進歩しててandroidならsetBackgroundDrawableが非推奨になって
setBackgroundをつかえみたいになってるnull代入しなくてよくなってるような
2017/01/23(月) 10:43:46.71ID:txYt6xvX
2017/01/23(月) 11:25:17.95ID:z+XsKe69
>>58
さすがにそこまでは覚えてないけど後半はコードにスペースリークがあると
すぐセグメンテーションフォルトする
序盤の問題は時間もスペースも気にせず簡単に解ける問題が多いので
その目的なら100番ぐらいから始めた方がいいよ
1番からだとさくさく進んで楽しいけどね
さすがにそこまでは覚えてないけど後半はコードにスペースリークがあると
すぐセグメンテーションフォルトする
序盤の問題は時間もスペースも気にせず簡単に解ける問題が多いので
その目的なら100番ぐらいから始めた方がいいよ
1番からだとさくさく進んで楽しいけどね
2017/01/23(月) 12:27:38.51ID:txYt6xvX
2017/01/23(月) 21:52:59.71ID:Wt4rS9Jl
Project Eulerでの答えを求めるのには十分でも
HackerRankのProject Euler+の同じ問題でTLEしたりしたことある
HackerRankのProject Euler+の同じ問題でTLEしたりしたことある
2017/01/23(月) 22:38:43.36ID:ibzQibs1
say :: Show s => s -> IO ()
say s = “Say, ++ show s ++ “!!”
print 1234
=> Say, 1234!!
print “Haskell”
=> Say, “Haskell”!!
ああああああああ!!!(ブリブリブリブリュリュリュリュ!!!ブッチチブブブチチチブリリリブブブゥゥゥゥッッッ!!!)
say s = “Say, ++ show s ++ “!!”
print 1234
=> Say, 1234!!
print “Haskell”
=> Say, “Haskell”!!
ああああああああ!!!(ブリブリブリブリュリュリュリュ!!!ブッチチブブブチチチブリリリブブブゥゥゥゥッッッ!!!)
2017/01/24(火) 00:13:24.79ID:MMtIoejY
2017/01/24(火) 11:43:31.36ID:OsDnSY6Y
showをユーザー定義する権利を与える代わりに「正しい」定義を決める義務がなくなる
というwinwinの関係
というwinwinの関係
2017/01/24(火) 11:53:28.57ID:GCEfrzc1
法則を満たしてるか静的にチェックする機構をコンパイラに実装することは理論上
@不可能
A可能(だが現実には困難)
B可能(で鋭意開発中)
C
@不可能
A可能(だが現実には困難)
B可能(で鋭意開発中)
C
2017/01/24(火) 12:06:44.09ID:OsDnSY6Y
法則ではなくユーザーの自由意志です
2017/01/25(水) 07:07:08.08ID:sKR8yojt
instance Show [Char] と書く方法の他に
instance Show Char の中で showList を定義するという方法もある
instance Show Char の中で showList を定義するという方法もある
2017/01/26(木) 08:50:54.03ID:lcTQYluv
最近Haskellの勉強を始めたのですが、
["aa", "bb", f ["cc", "dd"] ] =
["aa", "bb", "cc", "dd"]
となるような関数fはどのように書けるでしょうか
もしくはそのような既存の関数はありますか
["aa", "bb", f ["cc", "dd"] ] =
["aa", "bb", "cc", "dd"]
となるような関数fはどのように書けるでしょうか
もしくはそのような既存の関数はありますか
2017/01/26(木) 11:12:47.33ID:CzfVK0w5
>>68 型が合わないのでかけないと思う
2017/01/26(木) 13:24:39.66ID:lcTQYluv
71デフォルトの名無しさん
2017/01/26(木) 16:38:08.74ID:2yUJ7U50 普通に++での結合じゃアカンのか?
2017/01/26(木) 16:46:28.90ID:+E0dl1ly
たぶんその前の時点でアプローチがHaskellのやり方じゃないんだろう
2017/01/26(木) 17:04:34.61ID:CzfVK0w5
スタック型言語なら直接68のやり方は可能だと思う
74デフォルトの名無しさん
2017/01/26(木) 17:09:08.58ID:gPJK2FxR アンパックしたいのか
2017/01/26(木) 17:18:35.09ID:MclODevV
どういう文脈でそれをしたくなったのか説明してくれれば
うまい代替案が出てくるかもよ
うまい代替案が出てくるかもよ
2017/01/26(木) 17:36:01.96ID:9y5sHdOj
文脈は知らないが応用問題を作ればなんとなくわかる
length ["aa", "bb", f xs]
の値がコンパイル時に定数になることを証明せよ
または定数にならないような関数fを書け
length ["aa", "bb", f xs]
の値がコンパイル時に定数になることを証明せよ
または定数にならないような関数fを書け
2017/01/26(木) 20:00:55.44ID:XEk5YWy9
>>76
応用つか全然違う問題じゃないか
応用つか全然違う問題じゃないか
2017/01/26(木) 21:43:31.09ID:q6lSzUEJ
68です
単なる興味本位で出来ないものかと頭を捻らせていたもので
単なる興味本位で出来ないものかと頭を捻らせていたもので
2017/01/27(金) 06:04:37.64ID:gELNspyu
うーん
そもそも、それ許すとバグの温床になるからこその型だしねぇ。。。
そもそも、それ許すとバグの温床になるからこその型だしねぇ。。。
2017/01/27(金) 07:51:28.34ID:6/LCWfy+
Cのプリプロセッサというのを使うというのはどうだろう
2017/01/27(金) 08:14:39.10ID:Gw4smznt
["a","b"] ++ (id ["c","d"])
あかんの?
あかんの?
2017/01/27(金) 08:53:18.21ID:3bNTd4fp
それを許すと何も面白くない駄作の温床になるからね
2017/01/28(土) 01:14:43.56ID:fSWa9KDr
Template Haskellの話題ではないのか
84デフォルトの名無しさん
2017/01/28(土) 03:42:22.11ID:IY+AilYG haskellだと簡潔に書けるので
-shared で .dll(in windows), .so(in linux) を作って使っているのですが、
import Data.Text (or Data.List.Split.Internals)等で関数を書くと
.hsのコンパイルはいけるんですが
-shared の時に
-shared で .dll(in windows), .so(in linux) を作って使っているのですが、
import Data.Text (or Data.List.Split.Internals)等で関数を書くと
.hsのコンパイルはいけるんですが
-shared の時に
85デフォルトの名無しさん
2017/01/28(土) 03:43:06.88ID:IY+AilYG 定義されていない参照です, とエラーが出ます。
取り敢えず自分で関数書いてるので問題は無いのですが、haskellの勉強も兼ねて解消したいです。
どなたか教えて頂けないでしょうか
取り敢えず自分で関数書いてるので問題は無いのですが、haskellの勉強も兼ねて解消したいです。
どなたか教えて頂けないでしょうか
2017/01/28(土) 05:34:16.63ID:vo7t9bEK
FTPだっけ。あれどうなったか知ってる人いる?
length (4,2) == 1
になっちゃうやつ。
length (4,2) == 1
になっちゃうやつ。
2017/01/28(土) 09:59:41.44ID:9bw7znio
path パッケージの Path.parseRelDir 関数で、引数に "." や "../" が指定できないのは何故?
"." や "../" って相対パスちゃうの?
"." や "../" って相対パスちゃうの?
2017/01/28(土) 10:15:30.83ID:fSWa9KDr
> "." や "../" って相対パスちゃうの?
カレントディレクトリからの相対パスだが
そのpathパッケージとやらはカレントディレクトリを認識してるのか?
カレントディレクトリからの相対パスだが
そのpathパッケージとやらはカレントディレクトリを認識してるのか?
2017/01/28(土) 16:29:13.45ID:1e+Xw+ps
重城良国
Haskell 教養としての関数型プログラミング
Richard Bird 他1名
Haskellによる関数プログラミングの思考法
Haskell本が今度二冊も出るみたいですね
Haskell 教養としての関数型プログラミング
Richard Bird 他1名
Haskellによる関数プログラミングの思考法
Haskell本が今度二冊も出るみたいですね
2017/01/28(土) 20:17:03.76ID:9bw7znio
>>88
「カレントディレクトリを認識する」ってのがどういう意味なのか分からんのだが。
たとえば filepath パッケージに System.FilePath があるけど、
こっちのはカレントディレクトリを認識してるって言えるの?
「カレントディレクトリを認識する」ってのがどういう意味なのか分からんのだが。
たとえば filepath パッケージに System.FilePath があるけど、
こっちのはカレントディレクトリを認識してるって言えるの?
2017/01/29(日) 00:01:01.66ID:fPEtEvtP
2017/01/29(日) 08:43:35.35ID:INpmjvgO
2017/01/29(日) 08:52:55.32ID:W0xWcefq
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'の型宣言を同様に修正するとエラーが出ます。
エラーが出なくするために二行目の空リスト[]を
どう修正したら良いのか分からんとです。
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'の型宣言を同様に修正するとエラーが出ます。
エラーが出なくするために二行目の空リスト[]を
どう修正したら良いのか分からんとです。
2017/01/29(日) 08:55:53.89ID:W0xWcefq
訂正
上の myFoldr は foldr' の間違いです。
上の myFoldr は foldr' の間違いです。
2017/01/29(日) 09:16:54.72ID:OhLobWwB
2017/01/29(日) 13:55:23.65ID:/KLkodo+
Foldableは単にfoldr出来ますよーってだけの型クラスだから
リストなどのインスタンスを持ってこないと具体的には定義できない
(==) :: Eq a => a -> a -> Bool
だけでは定義しようがないのと同じ
リストなどのインスタンスを持ってこないと具体的には定義できない
(==) :: Eq a => a -> a -> Bool
だけでは定義しようがないのと同じ
2017/01/29(日) 15:59:36.88ID:ExFk7aPU
FTPはとっくに取り入れられてた。base 4.8.0から。気付かんかったわ
2017/02/01(水) 13:32:39.96ID:53XrODAY
stackアップデートできねえぞ
atomでエラーでたぞ
ghciってなんでデフォルト一行なの
勉強用なの?ふつうつかわないの?
atomとそのコマンド、パッケージ選び
Gitって初心者なのに入れるの?
ないとターミナルいれられないんだが
ああめんどい
コマンドプロンプト見にくい
フォントきもい
ターミナル必要なのか
ビルゲイツしね
ターミナルってのないとエディタからコンパイルできないの?
コンパイルなし実行できないの?
ライブラリとはなにか、どこにあるのか
アトムから読めんのか
ライブラリよんで勉強するもんなのか
Windowsのディレクトリなにこれ
ユーザー名フォルダの場所とか意味不明
パスってなに、パスの通し方
こんなんググらせんなよ
よくこんなの考えやがったな
やること多すぎ 時間かかりすぎ
おぼえたくない 時間のムダ
技術じゃなくて雑学だな
自動化しとけまとめとけクソクソうんこ
それでもプログラマか
啓蒙する気ゼロだなほんと
atomでエラーでたぞ
ghciってなんでデフォルト一行なの
勉強用なの?ふつうつかわないの?
atomとそのコマンド、パッケージ選び
Gitって初心者なのに入れるの?
ないとターミナルいれられないんだが
ああめんどい
コマンドプロンプト見にくい
フォントきもい
ターミナル必要なのか
ビルゲイツしね
ターミナルってのないとエディタからコンパイルできないの?
コンパイルなし実行できないの?
ライブラリとはなにか、どこにあるのか
アトムから読めんのか
ライブラリよんで勉強するもんなのか
Windowsのディレクトリなにこれ
ユーザー名フォルダの場所とか意味不明
パスってなに、パスの通し方
こんなんググらせんなよ
よくこんなの考えやがったな
やること多すぎ 時間かかりすぎ
おぼえたくない 時間のムダ
技術じゃなくて雑学だな
自動化しとけまとめとけクソクソうんこ
それでもプログラマか
啓蒙する気ゼロだなほんと
2017/02/01(水) 13:51:05.42ID:53XrODAY
オブジェクトファイルとインターフェースファイルのこともちゃんとまえもって教えないとダメでしょ
qiitaとか入門云々とかはてなブログとかほんと死ねばいいのよ
なんでもかんでも初心者にググらせてんじゃないよ!
qiitaとか入門云々とかはてなブログとかほんと死ねばいいのよ
なんでもかんでも初心者にググらせてんじゃないよ!
100デフォルトの名無しさん
2017/02/01(水) 16:06:50.00ID:Iw+tyvVU コンパイラは難しい
昔の古いインタプリタは簡単だった
確率は1/2じゃなくて実際は9割以上が難解な方を選ぶんだろう
昔の古いインタプリタは簡単だった
確率は1/2じゃなくて実際は9割以上が難解な方を選ぶんだろう
101デフォルトの名無しさん
2017/02/01(水) 17:56:57.37ID:UXwydrfk またワードサラダボットが稼働を始めたか
102デフォルトの名無しさん
2017/02/01(水) 18:22:05.14ID:C6fGSB5S 初心者じゃなくなってもなんでもかんでもググってる俺
カン拡張って何?ふむふむわからん
カン拡張って何?ふむふむわからん
103デフォルトの名無しさん
2017/02/01(水) 18:27:07.04ID:v0ndbkEe Kan拡張?
聞いた瞬間分かるわ圏論由来ってwww
圏論の本読め
聞いた瞬間分かるわ圏論由来ってwww
圏論の本読め
104デフォルトの名無しさん
2017/02/01(水) 19:57:57.60ID:M7LFtYkC リンシャンカイホウ?
105デフォルトの名無しさん
2017/02/01(水) 20:05:04.51ID:Iw+tyvVU 紙の本がなくなったら本を読むのもインストールで挫折する時代が来るかも
106デフォルトの名無しさん
2017/02/04(土) 23:20:45.84ID:9/lBQk1n 俺の部屋にはインストールで挫折した本が積み重なっている
107デフォルトの名無しさん
2017/02/05(日) 14:17:32.23ID:TDpThq2o ネタバレはズルという思想があるよね
タダで教えてもらえるネタバレを全部理解してから本を買うという発想ができない
タダで教えてもらえるネタバレを全部理解してから本を買うという発想ができない
108デフォルトの名無しさん
2017/02/05(日) 22:41:58.34ID:TdsB4n5F FIT(Framework for Integrated Test)
http://fit.c2.com/
これの Haskell 実装にチャレンジしてる人いる?
そんな人のブログやHP知らない?
試しに GitHub を探してみたけど、見当たらない感じ。
http://fit.c2.com/
これの Haskell 実装にチャレンジしてる人いる?
そんな人のブログやHP知らない?
試しに GitHub を探してみたけど、見当たらない感じ。
109デフォルトの名無しさん
2017/02/05(日) 22:42:57.06ID:Whb3/S6q 俺も龍を捨てて玉を詰むという勇気が出ない
110デフォルトの名無しさん
2017/02/06(月) 12:52:47.67ID:Ld2MqDtI Haskell objectiveってどうなったの?
やっぱダメだった?
やっぱダメだった?
111デフォルトの名無しさん
2017/02/06(月) 14:32:11.26ID:CcXtgB5F112デフォルトの名無しさん
2017/02/06(月) 14:44:23.19ID:Ld2MqDtI 使いやすさ的にどうだったのかなって。
作ったの日本人っぽいけど
作ったの日本人っぽいけど
113デフォルトの名無しさん
2017/02/06(月) 15:50:30.09ID:CcXtgB5F >>111
Haskellでの合成可能なオブジェクトの構成とその応用
https://fumieval.github.io/papers/ja/2015-Haskell-objects.pdf
>この章では、本稿で提案するオブジェクトの定義やその性質について説明する。なお、これから
>示すオブジェクトや関連する構造は、公開している objective パッケージ 1 に格納されている。
> 1 http://hackage.haskell.org/package/objective
Haskellでの合成可能なオブジェクトの構成とその応用
https://fumieval.github.io/papers/ja/2015-Haskell-objects.pdf
>この章では、本稿で提案するオブジェクトの定義やその性質について説明する。なお、これから
>示すオブジェクトや関連する構造は、公開している objective パッケージ 1 に格納されている。
> 1 http://hackage.haskell.org/package/objective
114デフォルトの名無しさん
2017/02/08(水) 01:03:40.92ID:E7OnquDd functor分からんとHaskellは使えないの?
115デフォルトの名無しさん
2017/02/08(水) 03:27:27.73ID:lPz/aekC 凄いHを一通りやって、今はReal world haskellやってる途中
設計関連がまだよく分かってないな
モナド変換子とか非同期関連もよく分かってないや
関数型の勉強で始めたけど中々難しい
言語としては今の所簡潔で好きではある、ってか他言語の括弧がキモく見えてきた
設計関連がまだよく分かってないな
モナド変換子とか非同期関連もよく分かってないや
関数型の勉強で始めたけど中々難しい
言語としては今の所簡潔で好きではある、ってか他言語の括弧がキモく見えてきた
116デフォルトの名無しさん
2017/02/08(水) 09:54:44.42ID:8j/X+nWQ オフサイドルールには賛否両論ある
117デフォルトの名無しさん
2017/02/09(木) 04:29:48.20ID:SonJzAjc >>114
んな事ない。
と言うか、昔はファンクタ自体無かった。
モナドあるならファンクタも入れろや的な。
モナドも、使うぶんにはいつの間にか使ってる感じ。
モナドとは何か?とか考えると難しいけど、まあモナドもファンクタも型の一種。
そう言う特性の関数や演算子を使うための。
言わば、処理の流れにも型があるとでも思ってくれ。
んな事ない。
と言うか、昔はファンクタ自体無かった。
モナドあるならファンクタも入れろや的な。
モナドも、使うぶんにはいつの間にか使ってる感じ。
モナドとは何か?とか考えると難しいけど、まあモナドもファンクタも型の一種。
そう言う特性の関数や演算子を使うための。
言わば、処理の流れにも型があるとでも思ってくれ。
118デフォルトの名無しさん
2017/02/09(木) 08:20:37.05ID:CYxwUQWJ >>114
実際的に重要なのはFunctorというよりも(そのインターフェースの)fmapの理解かな
多分よく出会うのはListのmapだけど、まずはこいつを使いこなせるようになれば
Haskellらしい、関数型らしい書き方ができるようになってくると思う
実際的に重要なのはFunctorというよりも(そのインターフェースの)fmapの理解かな
多分よく出会うのはListのmapだけど、まずはこいつを使いこなせるようになれば
Haskellらしい、関数型らしい書き方ができるようになってくると思う
119デフォルトの名無しさん
2017/02/09(木) 08:31:16.17ID:/fB7Lbok fmapとmapの名付けは解せない
120デフォルトの名無しさん
2017/02/09(木) 08:58:32.86ID:UTxumv29 モナド則は
型と関数と関数合成が満たすべきルール。
ただし自作モナドがモナド則を満たすことを保証する機構はない。
型と関数と関数合成が満たすべきルール。
ただし自作モナドがモナド則を満たすことを保証する機構はない。
121デフォルトの名無しさん
2017/02/10(金) 15:45:40.33ID:5JASqTbe fromIntegralに短縮名つけるのが癖の人っている?
fI = fromIntegral 的な
fI = fromIntegral 的な
122デフォルトの名無しさん
2017/02/10(金) 18:50:22.57ID:xMx0FpSS 長くなるならletで別行で定義する
123デフォルトの名無しさん
2017/02/11(土) 23:22:07.65ID:8gjNJV43 メッセージングシステムを主なアーキテクチャとしているアプリケーションにおいて、
そのメッセージの種類を増やすことでアプリケーションの機能を拡張する際に、
コンパイルすべきモジュールの数を最小限に抑える方法を探しています。
メッセージングシステムというと大げさかもしれませんが、
たとえば 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 型にシリアライズすれば再コンパイルの問題は解決しますが、
今度は型の不一致や未定義メッセージなどのバグがコンパイル時に発見できなくなり、それもマズいです。
厳格な型システムの恩恵にあずかりながら、かつ不要な再コンパイルを抑えるようなメッセージングシステムの構築方法はないでしょうか。
そのメッセージの種類を増やすことでアプリケーションの機能を拡張する際に、
コンパイルすべきモジュールの数を最小限に抑える方法を探しています。
メッセージングシステムというと大げさかもしれませんが、
たとえば 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 型にシリアライズすれば再コンパイルの問題は解決しますが、
今度は型の不一致や未定義メッセージなどのバグがコンパイル時に発見できなくなり、それもマズいです。
厳格な型システムの恩恵にあずかりながら、かつ不要な再コンパイルを抑えるようなメッセージングシステムの構築方法はないでしょうか。
124デフォルトの名無しさん
2017/02/12(日) 13:50:57.94ID:EOfitV0o javaですら良く分からんやつに
haskellのモナドなど分かるはずも無く
haskellのモナドなど分かるはずも無く
125デフォルトの名無しさん
2017/02/12(日) 15:45:54.11ID:+1FsHT8L ポインタ理解するときもモナド理解するときも小1で自転車補助輪外す時もみんな同じ感覚だった気がする
学習は滴定曲線のように、『気づいたら知って』いた
学習は滴定曲線のように、『気づいたら知って』いた
126デフォルトの名無しさん
2017/02/12(日) 16:10:07.24ID:QGOwrBDz たいていの概念は名前も説明も勿体つけてるが実はたいしたことはない
さらに最悪なのは長々と理屈ついている割に扱いは他の概念と変わらないやつだ
そういうのを世間では屁理屈という
さらに最悪なのは長々と理屈ついている割に扱いは他の概念と変わらないやつだ
そういうのを世間では屁理屈という
127デフォルトの名無しさん
2017/02/12(日) 17:52:39.61ID:C9OkM4dT 西尾維新批判はやめろ
128デフォルトの名無しさん
2017/02/12(日) 21:33:24.01ID:hoDvKKnX アベノミクスとか新常態とかもそうだよね
129デフォルトの名無しさん
2017/02/12(日) 22:25:13.91ID:cs8Gyxec haskellの本が出るみたいだから買ってみよう
130デフォルトの名無しさん
2017/02/12(日) 23:59:55.00ID:t7tEKqZ9 >>89の二冊か
131デフォルトの名無しさん
2017/02/14(火) 00:10:05.79ID:haBe4Sdm132デフォルトの名無しさん
2017/02/14(火) 07:07:04.56ID:0/yLOI7Z そもそもfoldはループより速い?
133デフォルトの名無しさん
2017/02/14(火) 10:36:57.61ID:CVjuh2pk134デフォルトの名無しさん
2017/02/14(火) 16:50:38.39ID:m6BuE6wx >>133
C
C
135デフォルトの名無しさん
2017/02/14(火) 21:33:40.60ID:jOgsWiWm136デフォルトの名無しさん
2017/02/14(火) 23:12:33.60ID:Bh34MboJ バイナリを吐かせて逆汗すれば比較できるんでないの?
つっても多くの関数呼び出しはインライン展開されるんだろうが
つっても多くの関数呼び出しはインライン展開されるんだろうが
137デフォルトの名無しさん
2017/02/15(水) 05:29:57.20ID:De10g5Ib >>132
データ構造やコンパイラによる。
Haskellは基本リストなのでアドレスが連続してるとは限らない。
Cだと同じ処理を配列に施す様なループはSIMD命令に変換される。
Haskellはそう言う命令に変換する為のデータ構造使う。
(データの連続性を保証するためにもデータ構造が別なのだと思う)
IntelC++コンパイラとかだと最新のSIMD命令に対応してる。
gcc程度まではHaskellでも書き方次第では追い付けるだろうけど、CPUメーカー謹製の最新CPU対応コンパイラにまでは勝てない。
入門書レベルではHaskellはCに勝てないけど、いかなる並列・並行処理も否定してない。
データ構造やコンパイラによる。
Haskellは基本リストなのでアドレスが連続してるとは限らない。
Cだと同じ処理を配列に施す様なループはSIMD命令に変換される。
Haskellはそう言う命令に変換する為のデータ構造使う。
(データの連続性を保証するためにもデータ構造が別なのだと思う)
IntelC++コンパイラとかだと最新のSIMD命令に対応してる。
gcc程度まではHaskellでも書き方次第では追い付けるだろうけど、CPUメーカー謹製の最新CPU対応コンパイラにまでは勝てない。
入門書レベルではHaskellはCに勝てないけど、いかなる並列・並行処理も否定してない。
138デフォルトの名無しさん
2017/02/15(水) 06:42:21.88ID:+7DpWr8H そもそもHaskellのfoldとCのforループとでは、
速度を比較するための条件をそろえる事ができません。
たとえばプロセスを立ち上げてから処理し終えるまでの時間、
このレベルであればHaskellとCの比較に意味はあります。
実行環境という条件を同一にできるからです。
(ちなみに、この場合はCの方をHaskellより速くすることができます)
一方HaskellのfoldとCのforというレベルでは、まず計算するために入力するデータが違います。
foldの入力データ型はリスト(Foldableのインスタンス)ですが、同じものをCで再現できますか?
入力データをそろえなければ「関数程度のレベルの比較」に意味はありません。
速度を比較するための条件をそろえる事ができません。
たとえばプロセスを立ち上げてから処理し終えるまでの時間、
このレベルであればHaskellとCの比較に意味はあります。
実行環境という条件を同一にできるからです。
(ちなみに、この場合はCの方をHaskellより速くすることができます)
一方HaskellのfoldとCのforというレベルでは、まず計算するために入力するデータが違います。
foldの入力データ型はリスト(Foldableのインスタンス)ですが、同じものをCで再現できますか?
入力データをそろえなければ「関数程度のレベルの比較」に意味はありません。
139デフォルトの名無しさん
2017/02/15(水) 07:03:08.40ID:mu4JLPUi 扱うモナドがファンクタのとき
return . f =<< m
は
f <$> m
とシンプルに置き換え可能なのですね
return . f =<< m
は
f <$> m
とシンプルに置き換え可能なのですね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁★2 [七波羅探題★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ★2 [♪♪♪★]
- ひろゆき氏 高市首相の台湾有事発言 「日本が得たものあまりない。経済的なマイナスは明確に存在」 [冬月記者★]
- ワチが一番キライなスポーツ1つ当ててみ
- (*´ω`*)おはヨーグルト
- ネトウヨ「レアアースは日本でも採れるから輸入しなくてもOK!」 なお精製コストがバカ高く有害物質が大量に出ることは全く知らない模様 [314039747]
- 16のヒッキー女に構って
- 普段は無口なくせにオチンチンくわえるとずっと離してくれない女の子たまにいるでしょ🥺
- 【すべてが】𝗮𝗺͜𝗮͉𝘇𝗼𝗻ブラックフライデーSALE総合【いいだろ!】 [194819832]
