関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ
https://haskell.jp/
前スレ
関数型プログラミング言語Haskell Part31
https://mevius.5ch.net/test/read.cgi/tech/1506447188/
探検
関数型プログラミング言語Haskell Part32
レス数が900を超えています。1000を超えると表示できなくなるよ。
2019/01/29(火) 09:05:47.90ID:gJP/u7IJ
837デフォルトの名無しさん
2019/12/10(火) 15:23:28.41ID:hI+yeapE 何もしなくても最適化で一回しか使われなくなるんじゃないの
haskellはそんなに馬鹿なの?
haskellはそんなに馬鹿なの?
838デフォルトの名無しさん
2019/12/10(火) 15:23:58.32ID:48kVELqA memcached
839デフォルトの名無しさん
2019/12/10(火) 17:01:00.59ID:6qyfceqR840デフォルトの名無しさん
2019/12/11(水) 22:52:31.45ID:r4LYbsNN -- cached :: IO a -> IO (IO a)
main = cached heavy >>= \ cachedHeavy -> 云々
こういうのでいいならunsafePerformIOは不要
main = cached heavy >>= \ cachedHeavy -> 云々
こういうのでいいならunsafePerformIOは不要
841デフォルトの名無しさん
2019/12/12(木) 11:38:57.75ID:y6+ig4ik >>840
はい。 f,g はトップレベルではなくIOアクションの中で定義しても大丈夫です。
IORefを使わなきゃ無理かな、と思ってたんだけど、これは目から鱗でした。
cached = pure
でいいんだよね?単にモナド一枚かぶせるだけで計算のキャッシュになるなんて、
今年一番のオドロキですわ
はい。 f,g はトップレベルではなくIOアクションの中で定義しても大丈夫です。
IORefを使わなきゃ無理かな、と思ってたんだけど、これは目から鱗でした。
cached = pure
でいいんだよね?単にモナド一枚かぶせるだけで計算のキャッシュになるなんて、
今年一番のオドロキですわ
842デフォルトの名無しさん
2019/12/12(木) 13:37:02.84ID:9RMznkJC843デフォルトの名無しさん
2019/12/12(木) 15:32:55.96ID:y6+ig4ik844デフォルトの名無しさん
2019/12/12(木) 15:46:44.83ID:y6+ig4ik つまり… こんな感じでいいのかしら
cached :: IO a -> IO (IO a)
cached f = do
r <- newIORef Nothing
pure $ do
c <- readIORef r
case c of
Nothing -> do
ts <- f
modifyIORef r . const . Just $ ts
pure ts
Just ts -> pure ts
> x <- cached $ print "heavy" >> pure 42
> x
"heavy"
42
> x
42
cached :: IO a -> IO (IO a)
cached f = do
r <- newIORef Nothing
pure $ do
c <- readIORef r
case c of
Nothing -> do
ts <- f
modifyIORef r . const . Just $ ts
pure ts
Just ts -> pure ts
> x <- cached $ print "heavy" >> pure 42
> x
"heavy"
42
> x
42
845デフォルトの名無しさん
2019/12/13(金) 00:08:15.85ID:0IkxZSMD IORefをご存知でない?
846デフォルトの名無しさん
2019/12/13(金) 11:45:01.85ID:Zghtw6X7 >>845
間違っているところがあったら、具体的に教えていただきたい。
間違っているところがあったら、具体的に教えていただきたい。
847デフォルトの名無しさん
2019/12/14(土) 10:44:10.58ID:EaJih9JU cabalファイルの中でexectableで同じcabalファイルの
ライブラリー名をbuild-dependsにかいてあるのに
そのライブラリーのbuild-depensを全部書かないとコンパイルできない
のはなんで?テンプレート使ってるからとかある?
ライブラリー名をbuild-dependsにかいてあるのに
そのライブラリーのbuild-depensを全部書かないとコンパイルできない
のはなんで?テンプレート使ってるからとかある?
848デフォルトの名無しさん
2019/12/14(土) 14:55:50.10ID:EaJih9JU ソースディレクトリをexeとlibに別々にしたら直った
なんだこのバグは酷いバグだ
なんだこのバグは酷いバグだ
849デフォルトの名無しさん
2019/12/16(月) 18:39:37.82ID:fwNQkg00 岡部健 (Ken Okabe)今度はQuoraでもアカウントBANされる
https://link.medium.com/EX3Y4COIs2
https://link.medium.com/EX3Y4COIs2
850デフォルトの名無しさん
2019/12/16(月) 19:25:09.38 終わったコンテンツでしょ、彼はもう
851デフォルトの名無しさん
2019/12/17(火) 00:03:50.44ID:3VYtFLTP オワコン。人間もっとやることある
852デフォルトの名無しさん
2019/12/17(火) 08:07:51.17ID:hHVSxQ9g キャッシュ? https://wandbox.org/permlink/98ZKnQW0uSr5c5CV
f () = print "hoge" >> getLine >>= \x -> print "foo" >> return (\() -> x)
main = do
putStrLn "1234"
f () >>= \g -> do
let e = g ()
print e
print e
f () = print "hoge" >> getLine >>= \x -> print "foo" >> return (\() -> x)
main = do
putStrLn "1234"
f () >>= \g -> do
let e = g ()
print e
print e
853836
2019/12/17(火) 15:16:27.15ID:zdxsmCDQ854デフォルトの名無しさん
2019/12/17(火) 22:59:40.32ID:nTHXuzTI そもそもライブラリを全てimportする奴はいないので
使わなかったライブラリのコードは最後まで実行されない
全てのライブラリについて使うか使わないか予測できないならば実行の順序は予測できない
使わなかったライブラリのコードは最後まで実行されない
全てのライブラリについて使うか使わないか予測できないならば実行の順序は予測できない
855デフォルトの名無しさん
2019/12/18(水) 00:29:20.63ID:RN3F5ybK856デフォルトの名無しさん
2019/12/18(水) 09:15:25.20ID:fJHQ6oEy え、岡部健ってQuoraで暴れてたの?
アカウント停止はまた癇癪起こして名誉毀損してたとかが理由??
アカウント停止はまた癇癪起こして名誉毀損してたとかが理由??
857デフォルトの名無しさん
2019/12/18(水) 11:17:26.49ID:RrfoIO3F >>856
彼がなにかしらのコミュニティーでうまくやっていけないのは、これまでの活動からわかりきっている。
むしろ、Quoraではよく持った方だと思うよ。お薬をきちんと服用するようになってるんだろうね。
彼がなにかしらのコミュニティーでうまくやっていけないのは、これまでの活動からわかりきっている。
むしろ、Quoraではよく持った方だと思うよ。お薬をきちんと服用するようになってるんだろうね。
858デフォルトの名無しさん
2019/12/18(水) 14:06:51.57ID:eMsBbOWH あいつか
859デフォルトの名無しさん
2019/12/19(木) 00:31:57.76ID:MqZ434Qi haskell自体はいいんだけどstackとかhieとかいちいちでかくてめんどくさい
本当にhaskell書いてる人はいるの?
本当にhaskell書いてる人はいるの?
860デフォルトの名無しさん
2019/12/19(木) 07:07:47.77ID:lwXrm8Zb 依存関係を管理するのは理想
依存関係を消すのが現実
C++やSTLに依存することすら嫌ってCだけで書くみたいな現実
依存関係を消すのが現実
C++やSTLに依存することすら嫌ってCだけで書くみたいな現実
861デフォルトの名無しさん
2019/12/19(木) 07:48:35.49ID:gwJfRXBJ hieはもうちょっとなんとかならんのかとは思う
862デフォルトの名無しさん
2019/12/19(木) 10:21:19.22ID:+cpLTGtZ >>860
Rubyをdisるのは止めれ
Rubyをdisるのは止めれ
863デフォルトの名無しさん
2019/12/19(木) 14:13:07.54ID:rbd8D3sc 実際にHaskellでコード書いてみると分かるけど
コンパイル通れば計算結果は確かに正しいんだけど
巨大なメモリを謎に使うようなバグが混入する事が結構あって
その種類のバグってエラー吐かないから特定がめっちゃ難しい。
巨大なプロジェクトでHaskell使うのは現実的には無理だと思う。
コンパイル通れば計算結果は確かに正しいんだけど
巨大なメモリを謎に使うようなバグが混入する事が結構あって
その種類のバグってエラー吐かないから特定がめっちゃ難しい。
巨大なプロジェクトでHaskell使うのは現実的には無理だと思う。
864デフォルトの名無しさん
2019/12/19(木) 14:32:39.93ID:0ocPbHfL それ
haskell で書かれたプログラムのパフォーマンスチューニングむずすぎる
haskell で書かれたプログラムのパフォーマンスチューニングむずすぎる
865デフォルトの名無しさん
2019/12/19(木) 14:54:58.39 あればあるだけ使おうとするんでない?
足りなくなってからようやく(これからやる処理に必要最低限の)ガベコレ
この繰り返しだから永遠に自転車操業
足りなくなってからようやく(これからやる処理に必要最低限の)ガベコレ
この繰り返しだから永遠に自転車操業
866デフォルトの名無しさん
2019/12/19(木) 19:09:11.03ID:rbd8D3sc この種のバグの混入原因って大抵の場合
ネットに散らばっている'Haskellらしい'記法にあったりするから
初心者の頃に読んだ書き方が
「(実はこの人全然Haskellでコード書いてないじゃんっ!!)」
と気が付くまでワンセット
ネット上だと処理が大きくなると破綻するようなサンプルコードばっかりでウンザリする
特に遅延評価を活用するような記法は
大抵メモリ関連のバグの原因になるから実際には避けなきゃダメなのばかり
ネットに散らばっている'Haskellらしい'記法にあったりするから
初心者の頃に読んだ書き方が
「(実はこの人全然Haskellでコード書いてないじゃんっ!!)」
と気が付くまでワンセット
ネット上だと処理が大きくなると破綻するようなサンプルコードばっかりでウンザリする
特に遅延評価を活用するような記法は
大抵メモリ関連のバグの原因になるから実際には避けなきゃダメなのばかり
867デフォルトの名無しさん
2019/12/19(木) 20:23:04.10ID:l1p3Y60G デフォルトの挙動性格評価にするやつあったよね
あれ使ってる?
あれ使ってる?
868デフォルトの名無しさん
2019/12/19(木) 20:49:23.97ID:lwXrm8Zb ガベコレ言語を全否定してみるのも一つの方法
たとえばスマホが壊れたら全部新品にするかそれとも壊れた部品を特定してそこだけ修理するか
たとえばスマホが壊れたら全部新品にするかそれとも壊れた部品を特定してそこだけ修理するか
869デフォルトの名無しさん
2019/12/19(木) 20:50:47.99ID:mvsIV7PX 結局最適化しようとするとコンパイラのくせをしっかり理解してたり
凄まじい技術力がいるという。。
凄まじい技術力がいるという。。
870デフォルトの名無しさん
2019/12/19(木) 23:44:31.80 つまり Rust の時代か
871デフォルトの名無しさん
2019/12/20(金) 10:00:27.91ID:lm7vpsLR Rustってhaskellerにも結構評判いいけどどうなの
872デフォルトの名無しさん
2019/12/20(金) 11:16:14.21ID:MYxSal4F >>871
俺は「あぁ,Haskell でいうアレね」みたいな感じで学べた
厳密な感じが好きなら,気にいるんじゃないのかな
ドキュメントも揃っていて学びやすいと思う
ただ,俺はいまいち使い所を見いだせてない
Haskell で書ける分野なら Haskell で書いちゃうし
ちょっとしたツールとかサーバーサイドとかは Go のが楽だし
WebAssembly を生成するために使うのが
今一番,Rust の活きる分野な気がする
Rust は,クロスコンパイルが楽なので
(個人の感想です
俺は「あぁ,Haskell でいうアレね」みたいな感じで学べた
厳密な感じが好きなら,気にいるんじゃないのかな
ドキュメントも揃っていて学びやすいと思う
ただ,俺はいまいち使い所を見いだせてない
Haskell で書ける分野なら Haskell で書いちゃうし
ちょっとしたツールとかサーバーサイドとかは Go のが楽だし
WebAssembly を生成するために使うのが
今一番,Rust の活きる分野な気がする
Rust は,クロスコンパイルが楽なので
(個人の感想です
873デフォルトの名無しさん
2019/12/20(金) 11:25:55.75ID:mQBHONqp >>871
ただのLisp方言やML方言はもう飽きたってことだろ
ただのLisp方言やML方言はもう飽きたってことだろ
874デフォルトの名無しさん
2019/12/20(金) 12:03:56.77ID:tZwYgFV3 「C言語は純粋関数型」と言ってたのってQuoraの岡部健?
875デフォルトの名無しさん
2019/12/20(金) 21:36:07.96ID:/W4lQx2e フロントをrustで書くとか一番馬鹿な選択だろ。話にならん。
876デフォルトの名無しさん
2019/12/23(月) 17:59:43.65ID:/flai8cL もしかしてParsecってあんまり使われてない?
Parsecのドキュメントが2001年とか古いのしか無くて、最初のサンプルコードすら通らない
ライブラリの使い方が解らなくていきなり躓いてる
Parsecのドキュメントが2001年とか古いのしか無くて、最初のサンプルコードすら通らない
ライブラリの使い方が解らなくていきなり躓いてる
877デフォルトの名無しさん
2019/12/23(月) 18:29:48.72ID:B7hjQJ1Z ここの住民、圏論とかの話だと玄人っぽいのにプログラミングの話になると初心者っぽくて謎
878デフォルトの名無しさん
2019/12/23(月) 20:24:57.43ID:E1rjr0pL >>876
ドキュメントと言うのが何を指しているのか具体的なURLを示してくれないと、
何が原因でどう躓いているのか、助けようにも調べる取っ掛かりが無くて困る。
あと、本当にその古いドキュメントとやらしか学習資料は無いのか?
他にチュートリアルやブログなどは参考にならないのか?
ドキュメントと言うのが何を指しているのか具体的なURLを示してくれないと、
何が原因でどう躓いているのか、助けようにも調べる取っ掛かりが無くて困る。
あと、本当にその古いドキュメントとやらしか学習資料は無いのか?
他にチュートリアルやブログなどは参考にならないのか?
879デフォルトの名無しさん
2019/12/23(月) 20:56:14.64ID:A/dzNHpI どうせ躓くなら一番最初に躓く初心者っぽい奴の方が運が良い
ビギナーズラック
巨大なメモリを使う巨大なプロジェクトの完成直前に躓くのはかなり運が悪い
ビギナーズラック
巨大なメモリを使う巨大なプロジェクトの完成直前に躓くのはかなり運が悪い
880デフォルトの名無しさん
2019/12/23(月) 21:51:15.50ID:pH3djwe1 >>876
Parsec の開発は今や"メンテナンスモード"に入っていて、代わりに attoparsec や megaparsec が活発。
https://haskell.e-bigmoon.com/posts/2019/07-14-megaparsec-tutorial.html
Parsec の開発は今や"メンテナンスモード"に入っていて、代わりに attoparsec や megaparsec が活発。
https://haskell.e-bigmoon.com/posts/2019/07-14-megaparsec-tutorial.html
881デフォルトの名無しさん
2019/12/23(月) 21:58:54.38ID:/flai8cL ここ[parsec: Monadic parser combinators](http://hackage.haskell.org/package/parsec)に載ってる
これ[Parsec, a fast combinator parser](https://web.archive.org/web/20140528151730/http://legacy.cs.uu.nl/daan/download/parsec/parsec.pdf)です
他のは、ついでにParsecに触れているという感じで、詳しそうなのはこれしか見付けられませんでした
<続く>
これ[Parsec, a fast combinator parser](https://web.archive.org/web/20140528151730/http://legacy.cs.uu.nl/daan/download/parsec/parsec.pdf)です
他のは、ついでにParsecに触れているという感じで、詳しそうなのはこれしか見付けられませんでした
<続く>
882デフォルトの名無しさん
2019/12/23(月) 21:59:30.49ID:/flai8cL 最初のサンプルコードを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](http://hackage.haskell.org/package/parsec-3.1.14.0/docs/Text-Parsec.html)で、この二行
import Text.Parsec.Prim
import Text.Parsec.Combinator
を見付け書いたところ
Prelude> import Text.Parsec.Prim
Prelude Text.Parsec.Prim> import Text.Parsec.Combinator
<続く>
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](http://hackage.haskell.org/package/parsec-3.1.14.0/docs/Text-Parsec.html)で、この二行
import Text.Parsec.Prim
import Text.Parsec.Combinator
を見付け書いたところ
Prelude> import Text.Parsec.Prim
Prelude Text.Parsec.Prim> import Text.Parsec.Combinator
<続く>
883デフォルトの名無しさん
2019/12/23(月) 22:00:22.40ID:/flai8cL 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 ‘* -> * -> *’
? In an expression type signature: Parsec Char
In the expression: simple :: Parsec Char
In an equation for ‘it’: it = simple :: Parsec Char
Prelude Text.Parsec.Prim Text.Parsec.Combinator> simple :: ParsecT Char
<interactive>:8:11: error:
? Expecting three more arguments to ‘ParsecT Char’
Expected a type, but
‘ParsecT Char’ has kind
‘* -> (* -> *) -> * -> *’
? In an expression type signature: ParsecT Char
In the expression: simple :: ParsecT Char
In an equation for ‘it’: it = simple :: ParsecT Char
引数が足りないみたいなことを言われます
英語も怪しいのに英語の解説も使えないとなるとどうして良いやら…
<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 ‘* -> * -> *’
? In an expression type signature: Parsec Char
In the expression: simple :: Parsec Char
In an equation for ‘it’: it = simple :: Parsec Char
Prelude Text.Parsec.Prim Text.Parsec.Combinator> simple :: ParsecT Char
<interactive>:8:11: error:
? Expecting three more arguments to ‘ParsecT Char’
Expected a type, but
‘ParsecT Char’ has kind
‘* -> (* -> *) -> * -> *’
? In an expression type signature: ParsecT Char
In the expression: simple :: ParsecT Char
In an equation for ‘it’: it = simple :: ParsecT Char
引数が足りないみたいなことを言われます
英語も怪しいのに英語の解説も使えないとなるとどうして良いやら…
884デフォルトの名無しさん
2019/12/23(月) 22:04:05.15ID:pH3djwe1 haskell ide engine って今どんな使用感?
そろそろ spacemacs haskell layer (中身 intero) から乗り換えようと思ってんだけど
未だにバージョン 1 未満なのが気になった。まだ待つべきかな。
そろそろ spacemacs haskell layer (中身 intero) から乗り換えようと思ってんだけど
未だにバージョン 1 未満なのが気になった。まだ待つべきかな。
885デフォルトの名無しさん
2019/12/23(月) 22:05:51.18ID:/flai8cL886デフォルトの名無しさん
2019/12/23(月) 22:07:10.46ID:wextYSDX887デフォルトの名無しさん
2019/12/23(月) 22:28:25.82ID:pH3djwe1 >> 883
このエラーメッセージ
Not in scope: type constructor or class ‘Parser’
これは Parser が見つからないよ。みたいな意味
検索サイトのフーグルを「パッケージ指定」機能を使って探すと
https://hoogle.haskell.org/?hoogle=Parser%20package%3Aparsec
Parser は import Text.Parsec.String すれば使えるってことが解って、
同じように letter の場所も調べられる。
attoparsec や megaparsec にも似たやつあるっぽいから、何となくで読み替えていけばいいんじゃないかな。
このエラーメッセージ
Not in scope: type constructor or class ‘Parser’
これは Parser が見つからないよ。みたいな意味
検索サイトのフーグルを「パッケージ指定」機能を使って探すと
https://hoogle.haskell.org/?hoogle=Parser%20package%3Aparsec
Parser は import Text.Parsec.String すれば使えるってことが解って、
同じように letter の場所も調べられる。
attoparsec や megaparsec にも似たやつあるっぽいから、何となくで読み替えていけばいいんじゃないかな。
888デフォルトの名無しさん
2019/12/23(月) 23:28:55.39ID:fuVSP632 >>886
> クヌースなんかもそんなもんだぞ。
Knuthはそんなことはないだろ
TeXもMetafontも最初のはKnuth自身が実装したのだから
> プログラム理論と実装ガツガツやる能力は別物だから。
圏論なんかの知識は実装と全く関係ないからね、そういう方面に明るいのと実装能力とは全く無関係だ
> クヌースなんかもそんなもんだぞ。
Knuthはそんなことはないだろ
TeXもMetafontも最初のはKnuth自身が実装したのだから
> プログラム理論と実装ガツガツやる能力は別物だから。
圏論なんかの知識は実装と全く関係ないからね、そういう方面に明るいのと実装能力とは全く無関係だ
889デフォルトの名無しさん
2019/12/23(月) 23:34:33.07ID:A/dzNHpI KnuthやLinusって
圏論どころかカプセル化・継承・ポリモーフィズムすら使ってない印象がある
実装能力とは全く無関係だし
圏論どころかカプセル化・継承・ポリモーフィズムすら使ってない印象がある
実装能力とは全く無関係だし
890デフォルトの名無しさん
2019/12/24(火) 07:35:31.98ID:nFH9kbNZ891デフォルトの名無しさん
2019/12/24(火) 08:12:11.27ID:IDR7+yeu 何をもってknuthにスキルを疑うのか分からんのだけど、彼のプログラミングスキルが
ゴミクズな世界があったとしても、scratchから書く問題ならアルゴリズムだけで
他の人より速いもの書いてそう
ゴミクズな世界があったとしても、scratchから書く問題ならアルゴリズムだけで
他の人より速いもの書いてそう
892デフォルトの名無しさん
2019/12/24(火) 16:43:33.89ID:Y/zbyQKx >>876
すごくタイムリーに reddit に似た質問が上がってるんだが偶然?
https://www.reddit.com/r/haskell/comments/ee6lwy/resources_for_learning_parsec/
すごくタイムリーに reddit に似た質問が上がってるんだが偶然?
https://www.reddit.com/r/haskell/comments/ee6lwy/resources_for_learning_parsec/
893デフォルトの名無しさん
2019/12/24(火) 21:34:10.54ID:4c9jV6+e 本人がtex書くまでこれほど大変と思ってなかったいうとるやん。
そのあとの文芸プログラミングとか、cのコード見てても、これあかんなとしか思わんわ。
そのあとの文芸プログラミングとか、cのコード見てても、これあかんなとしか思わんわ。
894デフォルトの名無しさん
2019/12/27(金) 22:57:25.24ID:LIBStdaN Getting started with Haskell
https://stackoverflow.com/questions/1012573/getting-started-with-haskell
https://stackoverflow.com/questions/tagged/haskell
https://stackoverflow.com/questions/tagged/functional-programming
https://stackoverflow.com/questions/tagged/monads
https://stackoverflow.com/questions/tagged/category-theory
https://stackoverflow.com/questions/tagged/functor
https://stackoverflow.com/questions/tagged/ghc
https://stackoverflow.com/questions/tagged/ghci
https://stackoverflow.com/questions/tagged/haskell-stack
https://stackoverflow.com/questions/tagged/cabal
.
.
.
https://stackoverflow.com/questions/1012573/getting-started-with-haskell
https://stackoverflow.com/questions/tagged/haskell
https://stackoverflow.com/questions/tagged/functional-programming
https://stackoverflow.com/questions/tagged/monads
https://stackoverflow.com/questions/tagged/category-theory
https://stackoverflow.com/questions/tagged/functor
https://stackoverflow.com/questions/tagged/ghc
https://stackoverflow.com/questions/tagged/ghci
https://stackoverflow.com/questions/tagged/haskell-stack
https://stackoverflow.com/questions/tagged/cabal
.
.
.
895デフォルトの名無しさん
2019/12/28(土) 23:16:17.55ID:wvWoDqVP Haskellは小さいプログラムを作るには最適なんだけど
大きいプログラムになるとメモリ周りの最適化が困難なのよね
実行結果自体は正しいからテストすり抜けるだろうし
バックエンドで採用しても
本番環境で初めてメモリヤバイと気付いて死ぬ未来しか見えない
大きいプログラムになるとメモリ周りの最適化が困難なのよね
実行結果自体は正しいからテストすり抜けるだろうし
バックエンドで採用しても
本番環境で初めてメモリヤバイと気付いて死ぬ未来しか見えない
896デフォルトの名無しさん
2019/12/29(日) 00:21:25.50ID:J8aGFBX9 自家用ジェット機と大型旅客機みたいなイメージかな
897デフォルトの名無しさん
2019/12/29(日) 11:10:02.50ID:09k8oxGS898デフォルトの名無しさん
2019/12/29(日) 13:22:56.43ID:/UuMyPob >>897
最初に上がってたsigmaの記事を発見したぞ
https://engineering.fb.com/security/fighting-spam-with-haskell/
なるほどHaskellを実運用するコツはGHCの魔改造から着手する事なのか
・・・って真似できるかーい!!
最初に上がってたsigmaの記事を発見したぞ
https://engineering.fb.com/security/fighting-spam-with-haskell/
なるほどHaskellを実運用するコツはGHCの魔改造から着手する事なのか
・・・って真似できるかーい!!
899デフォルトの名無しさん
2019/12/29(日) 15:18:21.26ID:n6JnyT9E >>898
ノリで採用したら地獄を見た感がヒシヒシと伝わってくる記事だね
その後facebookでHaskellを採用していない事実で察し
https://livedoor.blogimg.jp/sag_alt/imgs/7/e/7ece2698.png
ノリで採用したら地獄を見た感がヒシヒシと伝わってくる記事だね
その後facebookでHaskellを採用していない事実で察し
https://livedoor.blogimg.jp/sag_alt/imgs/7/e/7ece2698.png
900デフォルトの名無しさん
2019/12/29(日) 16:42:39.91ID:ADVmDYvb 遅延評価を諦めて型システムとパターンマッチ系統だけを
よくわからないけどCとかC++辺りに持っていくじゃだめかな
よくわからないけどCとかC++辺りに持っていくじゃだめかな
901デフォルトの名無しさん
2019/12/29(日) 22:43:02.62ID:J8aGFBX9 何を諦めたら最適解になるか?
これは愚問
これは愚問
902デフォルトの名無しさん
2019/12/30(月) 01:49:49.36ID:zGgGf8ov 赤黒木のコード読んでいたら
関数の定義に型情報があるけど
型推論で処理されるコード部分には型情報がない
目視で定義ーコード部を交互確認すると結構きつい
抽象化には貢献してるけど、人間が読み下すのは大変、オレはコンピュータじゃない(怒
そんな感じ
関数の定義に型情報があるけど
型推論で処理されるコード部分には型情報がない
目視で定義ーコード部を交互確認すると結構きつい
抽象化には貢献してるけど、人間が読み下すのは大変、オレはコンピュータじゃない(怒
そんな感じ
903デフォルトの名無しさん
2019/12/30(月) 07:02:47.72ID:gVSpb87m そんなのエディタにやらせればいい
904デフォルトの名無しさん
2019/12/30(月) 09:12:01.80ID:zGgGf8ov 要件定義が整っている関数の書き下ろしと
プログラムで記述されたコードの読み下しは難度が異なる
Haskellのコードは情報密度が高い事と抽象度の高さが強烈に効く
プログラムで記述されたコードの読み下しは難度が異なる
Haskellのコードは情報密度が高い事と抽象度の高さが強烈に効く
905デフォルトの名無しさん
2019/12/30(月) 09:50:40.36ID:aMPpMkgz Hakellだしコード読めば分かるだろ(コメントなし)
↓数カ月後
俺の書いたコードなのに意味が分からない・・・
↓数カ月後
俺の書いたコードなのに意味が分からない・・・
906デフォルトの名無しさん
2019/12/30(月) 10:41:43.52ID:0IC+e4Ro 工学と名のついた無根拠な宗教が蔓延ってる言語よりは科学してるだけマシ
907デフォルトの名無しさん
2019/12/30(月) 12:14:13.13ID:WAqdspci908デフォルトの名無しさん
2019/12/30(月) 13:26:36.21ID:khitn85K 赤黒木は左右対称のコードを2回書かされるから書きたくない
コードを読まなくても分かる
読む前から分かることをどれだけ知っているかが重要
読み始めてから努力するのは遅い
コードを読まなくても分かる
読む前から分かることをどれだけ知っているかが重要
読み始めてから努力するのは遅い
909デフォルトの名無しさん
2019/12/30(月) 16:27:15.32ID:LA/Q6l88910デフォルトの名無しさん
2019/12/30(月) 20:14:21.30ID:fOmQS2Mv911デフォルトの名無しさん
2019/12/30(月) 21:52:49.75ID:rDj24KcK >>909
よく読め、受賞は2019年だが
受賞内容は2009年の功績の話だぞ
そこで語られてる内容も2014年のGHC魔改造の件の話だし
5年も経過してるのに未だにその話しか出てこないって事はそういう事よ
よく読め、受賞は2019年だが
受賞内容は2009年の功績の話だぞ
そこで語られてる内容も2014年のGHC魔改造の件の話だし
5年も経過してるのに未だにその話しか出てこないって事はそういう事よ
912デフォルトの名無しさん
2019/12/30(月) 22:25:35.97ID:khitn85K よく読んだら分かること
読まなくても分かること
普遍的な方を重視するのがいいと思うよ
読まなくても分かること
普遍的な方を重視するのがいいと思うよ
913デフォルトの名無しさん
2019/12/30(月) 23:48:10.12ID:LA/Q6l88914デフォルトの名無しさん
2019/12/31(火) 00:12:07.17ID:Lj+eqMzp ちなみにFacebook自身は2015年の投稿で2年かけて
Sigmaの主要技術をHaskellに移行したといっている
https://engineering.fb.com/security/fighting-spam-with-haskell/
スライドもある
http://multicore.doc.ic.ac.uk/iPr0gram/slides/2015-2016/Marlow-fighting-spam.pdf
そしてSigma の Software Engineering Manager の公募を最近LinkedInでかけていた
職位はManagerだし応募要件にはHaskellスキル必須とは記載していないようなので
Haskellが実用的に使われているっていう傍証にはならないけどプロジェクトは生きてる様子
またその後別の各技術にとってかわられたという情報もなさげ
Sigmaの主要技術をHaskellに移行したといっている
https://engineering.fb.com/security/fighting-spam-with-haskell/
スライドもある
http://multicore.doc.ic.ac.uk/iPr0gram/slides/2015-2016/Marlow-fighting-spam.pdf
そしてSigma の Software Engineering Manager の公募を最近LinkedInでかけていた
職位はManagerだし応募要件にはHaskellスキル必須とは記載していないようなので
Haskellが実用的に使われているっていう傍証にはならないけどプロジェクトは生きてる様子
またその後別の各技術にとってかわられたという情報もなさげ
915デフォルトの名無しさん
2019/12/31(火) 01:50:17.69ID:Lj+eqMzp916デフォルトの名無しさん
2019/12/31(火) 02:29:04.76ID:MpeDYErb ナイス
917デフォルトの名無しさん
2019/12/31(火) 23:30:17.57ID:a+xjNkxx >>898
haskellやってる奴が評価されるのはその手の最適化できることを見込まれてるからだぞ。
haskellやってる奴が評価されるのはその手の最適化できることを見込まれてるからだぞ。
918デフォルトの名無しさん
2020/01/01(水) 04:13:12.99ID:IaAF7ILo Haskellを始めたばかりの者です
do構文は多用しても良いのですか?
手続き型を書いているような気分になります
関数型言語は初めてなので不安です
do構文は多用しても良いのですか?
手続き型を書いているような気分になります
関数型言語は初めてなので不安です
919デフォルトの名無しさん
2020/01/01(水) 09:08:22.50ID:msO/HyKq >>918
いいよ。モナドは手続きを実現するのに役立つ抽象だよ。
でもアプリカティブで用が足りるならアプリカティブを使うべき。
IO モナドを do で合成するシーンが多いならリファクタリングの余地があるかも。
Control.Monad や Control.Applicative のユーティリティが利用できないか検討してみて
いいよ。モナドは手続きを実現するのに役立つ抽象だよ。
でもアプリカティブで用が足りるならアプリカティブを使うべき。
IO モナドを do で合成するシーンが多いならリファクタリングの余地があるかも。
Control.Monad や Control.Applicative のユーティリティが利用できないか検討してみて
920デフォルトの名無しさん
2020/01/01(水) 09:16:52.80ID:msO/HyKq =>= 2020年の抱負 =>=
・珠玉本を再開したい。少なくとも二度目の四天王登場回までは行きたい
・Haskell でごはん食べる
・珠玉本を再開したい。少なくとも二度目の四天王登場回までは行きたい
・Haskell でごはん食べる
921デフォルトの名無しさん
2020/01/01(水) 10:49:49.64ID:1YmeR5a8 豊富なんてかいちゃって意識高い系かよwwwwww
922デフォルトの名無しさん
2020/01/01(水) 11:24:31.90ID:msO/HyKq >>921 いいでしょw 新年なんだし
923 【最底辺】 【25円】
2020/01/01(水) 13:25:14.55ID:tqBP4ADq Haskellの未来
924デフォルトの名無しさん
2020/01/01(水) 16:23:17.36ID:0CkTsEaj 一般化が未来だと仮定すると未来は...
925デフォルトの名無しさん
2020/01/02(木) 06:03:17.61ID:Ee9Lo0CG >>920
海外にはRemote OKなところあるよ
A List of companies that use Haskell
https://github.com/erkmos/haskell-companies
海外にはRemote OKなところあるよ
A List of companies that use Haskell
https://github.com/erkmos/haskell-companies
926デフォルトの名無しさん
2020/01/02(木) 07:13:34.68ID:RghxuQ5t OSS として良さげなツールを作って
Github Sponcers で支援を受ける
って方針を考えてる。どうかな
Github Sponcers で支援を受ける
って方針を考えてる。どうかな
927デフォルトの名無しさん
2020/01/02(木) 07:26:54.44ID:RghxuQ5t >>925
名古屋の時計販売店BIGMOONさん
https://www.e-bigmoon.com
https://haskell.e-bigmoon.com ってお役立ちHaskell 情報がありがたいサイトやん。
中の人、時計屋さんだったのか…
名古屋の時計販売店BIGMOONさん
https://www.e-bigmoon.com
https://haskell.e-bigmoon.com ってお役立ちHaskell 情報がありがたいサイトやん。
中の人、時計屋さんだったのか…
928デフォルトの名無しさん
2020/01/03(金) 13:05:21.13ID:EVicjzWY Haskellは妙にテクニカルな部分が多い気がする
2変数関数fと1変数関数gを合成するときに
g . f
ではだめで
g .: f where (.:) = (.) (.) (.)
って書くのとか良く思いつくなって感じ
2変数関数fと1変数関数gを合成するときに
g . f
ではだめで
g .: f where (.:) = (.) (.) (.)
って書くのとか良く思いつくなって感じ
929デフォルトの名無しさん
2020/01/03(金) 13:32:58.92ID:r+r/o5nr >>928
それは、ポイントフリーで書いているからテクニカルに見えるたけで、
引数を明記すればビギナーにも理解できる式になるぞ。
やってみれば分かる。
他のもそうだ。
例えばライブラリの作者がポイントフリーで書いているのは、
その方がベテランの作者やコミュニティーにとって読みやすいからだ。
彼らもビギナーを相手に解説する際は、
自分達には多少洗練されていない様に見えても、
ビギナーにとっての読みやすさを優先する。
日本語の文章における「漢字」と「かな」の関係のようなものだ。
それは、ポイントフリーで書いているからテクニカルに見えるたけで、
引数を明記すればビギナーにも理解できる式になるぞ。
やってみれば分かる。
他のもそうだ。
例えばライブラリの作者がポイントフリーで書いているのは、
その方がベテランの作者やコミュニティーにとって読みやすいからだ。
彼らもビギナーを相手に解説する際は、
自分達には多少洗練されていない様に見えても、
ビギナーにとっての読みやすさを優先する。
日本語の文章における「漢字」と「かな」の関係のようなものだ。
930デフォルトの名無しさん
2020/01/03(金) 13:49:51.60ID:EVicjzWY931デフォルトの名無しさん
2020/01/03(金) 13:53:52.89ID:biPe5Zol g . f がだめな理由は型なので
fun<A, B> g;
fun<C, fun<D, A> > f;
このような型を宣言できる任意の言語に同じ問題がある
また、他の言語で問題が解決されたらHaskellでも解決できる
fun<A, B> g;
fun<C, fun<D, A> > f;
このような型を宣言できる任意の言語に同じ問題がある
また、他の言語で問題が解決されたらHaskellでも解決できる
932デフォルトの名無しさん
2020/01/03(金) 14:08:31.95ID:EVicjzWY >>931
g :: b -> c
f :: a1 -> a2 -> b
に対して
(.) :: (b -> c) -> (a -> b) -> a -> c
の a を a1 -> a2 と解釈してくれれば話が速いんだけどね
a1 -> a2 -> b が実際には a1 -> (a2 -> b) で要は(->)が右結合だから駄目なのよね
g :: b -> c
f :: a1 -> a2 -> b
に対して
(.) :: (b -> c) -> (a -> b) -> a -> c
の a を a1 -> a2 と解釈してくれれば話が速いんだけどね
a1 -> a2 -> b が実際には a1 -> (a2 -> b) で要は(->)が右結合だから駄目なのよね
933デフォルトの名無しさん
2020/01/03(金) 15:06:47.95ID:r+r/o5nr >>930
すまん、そういう話ではない。
「妙にテクニカルな部分が多い」と言うのは、
君の感じたhaskellの不満点や欠点なんだと俺は捉えたが、違うか?
2変数関数と1変数関数とを合成する関数(.:)の「型がまず先」にあって、
(.:) :: (c -> d) -> (a -> b -> c) -> (a -> b -> -> d)
これを実装するのに
(.:) = (.) (.) (.)
と書く者もいて、君に妙にテクニカルだと感じさせるのかもしれないが、
(.:) g f = \a b -> g (f a b)
こう書けば、ビギナーにも容易に意味が読みとれる。
テクニカルでは全然ないだろう。
君が妙にテクニカルだと感じる大部分はhaskellの生来のものではなく、
単にビギナーに読めるようにも書けるコードをたまたまテクニカルに書いただけだ。
身の丈や好みに合った書き方をすれば不満に感じることはないだろう、と言いたかった。
すまん、そういう話ではない。
「妙にテクニカルな部分が多い」と言うのは、
君の感じたhaskellの不満点や欠点なんだと俺は捉えたが、違うか?
2変数関数と1変数関数とを合成する関数(.:)の「型がまず先」にあって、
(.:) :: (c -> d) -> (a -> b -> c) -> (a -> b -> -> d)
これを実装するのに
(.:) = (.) (.) (.)
と書く者もいて、君に妙にテクニカルだと感じさせるのかもしれないが、
(.:) g f = \a b -> g (f a b)
こう書けば、ビギナーにも容易に意味が読みとれる。
テクニカルでは全然ないだろう。
君が妙にテクニカルだと感じる大部分はhaskellの生来のものではなく、
単にビギナーに読めるようにも書けるコードをたまたまテクニカルに書いただけだ。
身の丈や好みに合った書き方をすれば不満に感じることはないだろう、と言いたかった。
934デフォルトの名無しさん
2020/01/03(金) 15:11:49.96ID:biPe5Zol >>932
随伴の事か
随伴の事か
935デフォルトの名無しさん
2020/01/03(金) 16:07:32.31ID:EVicjzWY >>933
Haskellに不満を持ってるとかではなくて単に凝った式に良く出会うというだけの話よ
そして凝った式を同値変形で分かりやすい式に変形するのが難しいことも多いと思う
個人的にはどう実装するかよりもどう同一視するかの方に興味がある
Haskellに不満を持ってるとかではなくて単に凝った式に良く出会うというだけの話よ
そして凝った式を同値変形で分かりやすい式に変形するのが難しいことも多いと思う
個人的にはどう実装するかよりもどう同一視するかの方に興味がある
936デフォルトの名無しさん
2020/01/03(金) 16:22:44.44ID:r+r/o5nr937デフォルトの名無しさん
2020/01/03(金) 16:34:21.29ID:EVicjzWYレス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【高市核兵器】 小泉コメ防衛大臣「民主党政権 岡田外務大臣の “非核三原則” に関する国会答弁を引き継いでいる」 政策堅持を明言 [485983549]
- 【高市賃上げ】 自民党&維新の会「国会議員の給与を 月5万円アップさせる!」 今国会で歳費法改正。 月129万円→月134万円に [485983549]
- Apple Arcade凄い。ゲーム遊び放題。言うなればゲームの食べ放題。サブスク
- 犯罪者たち「刑事罰受けて罪は償った!被害者への賠償金?もう反省済みだから一円も払わねーよばーかwww」 [177178129]
- ㊗157円 [194819832]
- 【高市会談】 長年、日本初の女性首相を目指し争った 百合子と早苗「国と都の補正予算で連携するわよ!」 首相官邸で初会談 [485983549]
