数学は無限に高速なCPU、無限に使えるメモリを前提として処理を議論する
-- ほげ :: FilePath -> IO (Bool, [FilePath])
(d, paths) <- ほげ path
if d then foldr (>>) (return ()) $ map 再帰 paths
else ふが
ディープラーニング用ライブラリ grenade を使ってみようと思いましたが、
依存関係のせいで stack でパッケージをインストールできず困っています。
grenade は stackage には無いので stack プロジェクトの stack.yaml ファイルに
必要なパッケージを書き加えました。
extra-deps:
- grenade-0.1.0
- containers-0.5.11.0
- exceptions-0.8.3
- hmatrix-0.18.2.0
- singletons-2.2
- th-desugar-1.6
- template-haskell-2.11.1.0
しかし依存関係が解消されません。
template-haskell が問題を起こしているようです。
exceptions-0.8.3 が template-haskell の >=2.2 && <2.14 を必要とし、
th-desugar-1.6 が同じ template-haskell の <2.12 を必要としています。
よって、template-haskell-2.11.1.0 は両方の条件を満たすと思うのですが、依存関係のエラーが出ます。
しかも、なぜか template-haskell-2.13.0.0 を extra-deps に加えろと推奨されます。
試しに template-haskell-2.13.0.0 を extra-deps に記述してみましたが、
2.11.1.0 の時と全く同じエラーが出ます。
(相変わらず 2.13.0.0 を追加しろと推奨されます)
何が問題なのでしょうか?
stack のバージョンは 1.7.1 です。
ディープラーニングにHaskellを使おうとしていることが問題
0965デフォルトの名無しさん2019/01/17(木) 21:37:06.39ID:R/7pNsew
cabal new-ナントカ
を日本語で解説してほしい
0967sage2019/01/19(土) 21:02:03.11ID:K21HdJ2L
Haskellの「->」という記号の読み方はありますか?
他のプログラミング言語だと「->」には「アロー演算子」という名前が付けられていますが、Haskellの場合は何という名前なのでしょうか?
data T = D { f :: Int -> Int }
という型があったら、関数 f の実際の型は T -> Int -> Int だよね。
で、この関数 f の中で、引数として渡されたT 型の値にアクセスする方法って無いかな?
g :: T -> Int -> Int って型の関数を作っても、
D { f = g } なんてできないよね。
h :: Int -> Int なら D { f = h } はできる。
data D = D { f :: Int -> Int, x :: Int }
g d y = x d + y
d = D { f = g d, x = 1 }
f d 1 == 2
とか?
既出かも知れませんが
「 木 (tree) 」の読み方について質問です。
化学では「塩」をシオではなくエンと読む様に
「 木 」もモクやボクと読むのか
訓読みでキと読むのか確認したいです。
そうでしたか。
しかし良く考えてみたら
薔薇木(ばらぼく)って同性愛雑誌みたいでした。
0979デフォルトの名無しさん2019/01/23(水) 15:57:01.39ID:I7vJASel
葉は
枝えだ
木き
根ね
0982デフォルトの名無しさん2019/01/24(木) 10:45:53.06ID:TePOwsZ1
擬人化してくれ
Haskell は初期学習コストが高すぎるのと、圏論イキリおじさんが煙に巻くので近寄りがたい雰囲気を醸している
ちょっと勉強したけど、なんか仕様がコロコロ変わってるような気がして、
本格的に手を出しにくい
mtl パッケージの Control.Monad.Reader モジュールで MonadReader クラスが定義されています。
この定義で、なぜ m -> r などという制約が課せられているのでしょうか。
class Monad m => MonadReader r m | m -> r where
この制約がないと何が不都合なのでしょうか。
m → r
mを決めると自動的にrも決まるという意味だろうか
いまモナドを、ReaderT r m と決めた
だからそこで使われる r が自動的にMonadReader r 〜の r となるのだ
このように素人目に推測できる
0988デフォルトの名無しさん2019/01/25(金) 08:16:02.28ID:iIPgsGqp
>>983
モナド使うだけなら圏論要らんけどな。
自作するなら圏論要るけど、それはHaskellが難しいんじゃなくて圏論(とか数学)が難しいだけで。
自作しないでただのプログラミング言語として使う分には難しくない。
(どこまで抽象化できるか研究してる人が多いから難しく感じるだけ)
>>=演算子はモナドを受け取ってモナドを返す演算子と覚えておけば良い。
(だからモナド受け取って、モナドの中の値を取り出して処理したらreturnでモナドに包むか、モナド返す関数に引数として渡す)
returnとかclassとか、普通の言語にも同じ用語が出るからって、同じ意味と考えないほうがいい。
まっさらな頭で挑むべし。
(そういう意味で初心者の方が理解が早い) C++のtemplateのような制約がないダックタイピングに不都合を実感した者は理解が早い
初心者より早い
UndecidableInstancesだからでは?
自分も理解しきれてないけど
質問ではなく否定ができる者は理解が早い
どういうことでしょうか、ではなく、ここが間違っているのを知ってる俺は正しい
その方が圧倒的に早い
10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 488日 10時間 6分 25秒