New Threads

brew install haskell-stack がstackをソースからコ...

brew install haskell-stack
がstackをソースからコンパイルしちゃう件って、今でもそうなんでしょうか。
本来stackはコンパイル済みの実行ファイルからインストールした方が時間もかからないし安全なやり方なんですが、以前見たときはそうなっておらず、わざわざGHCをインストールしてstackのビルドから始めるという面倒な仕様でした。

10 replies

Haskell初心者なので、見当違いのことを言っているかもしれませんが、質問させ...

Haskell初心者なので、見当違いのことを言っているかもしれませんが、質問させてください 🙇

**※全てGHCi v8.0.2で処理を行っています**

fmapap を用いることで、任意個の引数を持つ関数と任意個のFunctorに対して、以下のような計算が行えるかと思います:

(*) <$> Just 1 <*> Just 2 => Just 2


ここで、TupleもFunctorのインスタンスであることを知り、以下のような計算を考えてみました:

(*) <$> (1, 1) <*> (2, 2) => (1, 2) となることを期待


しかしながら、上記の式はShowのインスタンスとして解決できないという趣旨のエラーにより、期待する結果が得られませんでした。

そこで、ステップごとに型を確かめてみたところ:

:t ((*) <$>)
((*) <$>) :: (Num a, Functor f) => f a -> f (a -> a)

:t ((*) <$> (1,1))
((*) <$> (1,1)) :: (Num t, Num a) => (t, a -> a)

:t ((*) <$> (1,1) <*>)
((*) <$> (1,1) <*>) :: (Num t, Num b, Monoid t) => (t, b) -> (t, b)

:t ((*) <$> (1,1) <*> (2,2))
((*) <$> (1,1) <*> (2,2)) :: (Num t, Num b, Monoid t) => (t, b)


これより、 ap を適用した時点で第一要素にMonoidの型制約が入っており、これがエラーの原因かと考えています。

なぜ ap を適用した時点でMonoidの型制約が入るのでしょうか?これは、TupleがApplicativeのインスタンスとして何か特殊化されているためなのでしょうか?
またもし上記が正しい場合、特殊化を回避すれば期待する計算結果は得られるのでしょうか?

長文となりましたが、ご教授いただければ幸いです :haskell:

15 replies

`Data.List.delete` って、最初にマッチした要素しか消してくれな...

Data.List.delete って、最初にマッチした要素しか消してくれないのですね。マッチする全部の要素を取り除く関数ってありませんか?

5 replies

ghcで書いたプログラムを pythonで動かしたいです jsへのコンパイラはい...

ghcで書いたプログラムを
pythonで動かしたいです
jsへのコンパイラはいろいろありますが
pythonに変換するものはありますか?

4 replies

GHCiを使った16進電卓的なものを以下に置きました。 これまで個人的に使ってい...

GHCiを使った16進電卓的なものを以下に置きました。
これまで個人的に使っていたものを少し整備して共有してみました。
後置記法の.@や、指定bitをハイライトする.@colorなどがお気に入りです:) 普段、16進や2進数などと格闘している方に役立ちましたら:slightly_smiling_face::haskell:

1 replies

&gt; homogeneous equality, which means e...

> homogeneous equality, which means equality is between types of a same kind
だから,同一kindでの関係か異なるkindでの関係かでは?

18 replies

難しそうな質問ですみません。HIW 2018にあった <https://icfp...

難しそうな質問ですみません。HIW 2018にあった
https://icfp18.sigplan.org/event/hiw-2018-papers-coercion-quantification
こちらの発表の内容を理解しようとしているんですが、
出てくる「homogeneous equality」「heterogeneous equality」というキーワードがさっぱりわからず、困っております。
既存の a ~ b ともまた違うっぽいんですが、どう違うんでしょうか?

1 replies

Persistent PostgreSqlに関する質問です。 以下の記事にそって...

Persistent PostgreSqlに関する質問です。
以下の記事にそってcreatedAt UTCTime default=CURRENT_TIMEと設定しました。
https://www.yesodweb.com/book/persistent#persistent_attributes

しかしマイグレーションの際に以下のエラーメッセージが出力されます。

*** Exception: SqlError {sqlState = "42804", sqlExecStatus = FatalError, sqlErrorMsg = "column \"created_at\" is of type timestamp with time zone but default expression is of type time with time zone", sqlErrorDetail = "", sqlErrorHint = "You will need to rewrite or cast the expression."}


これに対する回避策はあるのでしょうか。

6 replies

unsafePerformIO(を用いた式)が正当化される式への条件みたいなの、...

unsafePerformIO(を用いた式)が正当化される式への条件みたいなの、定式化されて欲しいな

10 replies

最終的に <http://hackage.haskell.org/package...

最終的に http://hackage.haskell.org/package/hfmt-0.2.3.1/reports/1 に書いてあるバージョンで全部揃えてやっと成功(それまでに4880行を費やした)

1 replies

hfmtのビルドにひたすら時間がかかるなどした(stack使っているはずなのにc...

hfmtのビルドにひたすら時間がかかるなどした(stack使っているはずなのにcabal hellみたいなことになった)

1 replies

GHC 8.2に追加されたもののあまり話題に上がらないCompact regio...

GHC 8.2に追加されたもののあまり話題に上がらないCompact regions (http://hackage.haskell.org/package/compact-0.1.0.1/docs/Data-Compact.html) について、最近いい使い方がわかってきたのでシェアします: ・一秒に数回以下の低頻度で更新するデータをcompactする(Mapなど、ポインタ数が多いものによく効く) ・IORefに突っ込む ・GCが速い!:v:('ω':v:)三:v:('ω'):v:三(:v:'ω'):v: 不変データを格納するイメージに反して、参照型と相性がよいです。大規模なプログラムはどうしてもGCで止まる時間が長くなってしまう宿命がありましたが、それを打開しうる非常に強力な機能です

11 replies

質問です。遊びでRedditのようなものを作ってたのですが。`Comment`の...

質問です。遊びでRedditのようなものを作ってたのですが。CommentのArbitraryインスタンスで躓いています。。
https://gist.github.com/HirotoShioi/94367f655bd0fb00e5acb27be1ed29eb
runSumComment 100
と実行するとランダムなコメントをn個生成してその統計を取っているのですが、StackOverFlowで実行エラーになります。

data Comment = Comment
    { cId          :: !Integer
    , cAuthor      :: !User
    , cParentId    :: !(Maybe Integer)
    , cPoint       :: !Int
    , cDescription :: !Text
    , cResponse    :: ![Comment]
    } deriving Show


原因はcResponseがコメントのリストだからねずみ講の要領でとんでもない量のコメントに膨れ上がってるからだと睨んでます。
できればコメントの返信の総数を200以下に留めたいのですが、それは可能なのでしょうか。

8 replies

Conduit(cereal-conduit)について質問させてください。 ce...

Conduit(cereal-conduit)について質問させてください。
cereal-conduitで定義されている conduitGet2 を真似して(ほぼコピペ)デシリアライズした値と一緒に、今何バイト目にいるのかをタプルで返すコードを書いてみたのですがコンパイルエラーになってしまいうまく行きません。
i <- IO.hTell h の部分を i <- return 123 などにするとコンパイルはできたのですが、なぜ i <- IO.hTell h だとエラーになってしまうのかがわからない状況です。
上記の質問とは少しずれてしまうのですが、自分で conduitGet3 などを定義せず既存の conduitGet2 を使いつつ今何バイト目にいるのかをデシリアライズした値と一緒に返す方法なんてあったりするのでしょうか?
ちなみにエラーメッセージはこんな感じです。よろしくお願い致します。

    • Couldn't match type ‘IO’
                     with ‘ConduitT BS.ByteString (o, Integer) m’
      Expected type: ConduitT BS.ByteString (o, Integer) m Integer
        Actual type: IO Integer
    • In a stmt of a 'do' block: i <- IO.hTell h
      In the expression:
        do i <- IO.hTell h
           yield (x, i)
           if BS.null rest then awaitNE >>= start else start rest
      In an equation for ‘result’:
          result (Done x rest)
            = do i <- IO.hTell h
                 yield (x, i)
                 if BS.null rest then awaitNE >>= start else start rest
    • Relevant bindings include
        x :: o (bound at app/Main.hs:73:18)
        result :: Result o -> ConduitT BS.ByteString (o, Integer) m ()
          (bound at app/Main.hs:66:5)
        awaitNE :: forall o. ConduitT BS.ByteString o m BS.ByteString
          (bound at app/Main.hs:54:5)
        g :: Get o (bound at app/Main.hs:49:15)
        conduitGet3 :: IO.Handle
                       -> Get o -> ConduitT BS.ByteString (o, Integer) m ()
          (bound at app/Main.hs:49:1)
   |
74 |         i <- IO.hTell h
   |              ^^^^^^^^^^

37 replies

あまりに初心者な質問で申し訳ありません。ghciの中でいろいろ作業中、例えばCo...

あまりに初心者な質問で申し訳ありません。ghciの中でいろいろ作業中、例えばControl.Lensが必要だと気づいたとします。package.yamlにlensを追加まではいいとして、その後ghciを抜けることなくControl.Lensをロードすることは可能でしょうか。今は一旦ghciを抜けて、またstack ghciで入っているのですが、それまでいろいろ作業してきた内容をまた1からやり直しています。できればそれまでの作業や変数はそのままで追加でモジュールが読めれば最高なのですが・・・

4 replies

以下のコードをビルドすると `Orphan instance: instance...

以下のコードをビルドすると Orphan instance: instance From Word8 HogeSerializeFormat という警告が出てしまいます。
https://repl.it/repls/SilverIntentEmulator
{-# OPTIONS_GHC -fno-warn-orphans #-} をつければ警告を消せるようなのですが、そもそもこの警告は何が問題なのでしょうか?(実行時にエラーになる場合があるなど)
ネットで調べてみると instance From Word8 HogeSerializeFormat の部分のファイルを分ければよいということが書いてあったのですが、分けようとした(module Data.Word内に書いてみた)際に循環importになってしまいビルドができなくなってしまいました。
hs-bootというものを使えば解決できると書いてあったのですが、僕の理解が間違っているのかhs-boot内でお互いをimportしてしまい、結局循環import問題が発生してしまいました。
長くなりましたが、この問題はどう解決するのがベストなのでしょうか? {-# OPTIONS_GHC -fno-warn-orphans #-} をつけて警告を消してしまってよいのか、それとも別の方法がよいのか。
よろしくお願い致します。

8 replies

Kan extension は何か具体的な用途や例などあるの? 最近 Kan e...

Kan extension は何か具体的な用途や例などあるの?
最近 Kan extensionを勉強して、なんとか理解できたけど、実際の用途は全然思いつかなくて…

4 replies

<https://haskell-jp.slack.com/archives/C...

https://haskell-jp.slack.com/archives/C707P67R7/p1533525889000105 こちらの質問に答えるにあたり気になったのですが、
VS CodeでHIEを起動した場合、HIEのデバッグオプションはどうやって設定するんでしょうか...?
Neovimの場合languageclientの設定でいけるんですけど...
さっと https://github.com/alanz/vscode-hie-server/blob/master/src/extension.ts のソースを読んでもわからず。

5 replies

いくつか質問させてください。 1. このコードで `:: Int` を推論して...

いくつか質問させてください。

1. このコードで :: Int を推論してもらうことはできないのでしょうか?Intを受け取るものしか定義していないのでしてくれても良さそうに感じるのですが…
https://repl.it/repls/EnormousStimulatingCalculator

2. Maybeでラップしたものを返したいのですがどのように定義したら良いのでしょうか?
https://repl.it/repls/MassiveAssuredBootstrapping

3. そもそもこういうことができるクラスは標準で用意されていたりしないのでしょうか?RustのFromトレイトみたいなことがしたいのですが…

よろしくお願い致します。

9 replies

`ForeignObj#` はいったい何だろう、ググっても、GHCのgitを全部...

ForeignObj# はいったい何だろう、ググっても、GHCのgitを全部検索しても見つからない https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ffi-chap.html#unboxed-types

2 replies