New Threads

cabal new-buildやcabal new-testで、stack bu...

cabal new-buildやcabal new-testで、stack buildの--pedanticオプション相当のことはできるでしょうか?
cabal new-build --ghc-options="-Werror -Wall"
でいけるだろうと思いきや、依存しているパッケージに警告があった場合までエラーになってしまうので、意図した動作にならず、悩んでおります。

7 replies

[fpco/stack-build](<https://hub.docker.c...

[fpco/stack-build](https://hub.docker.com/r/fpco/stack-build/) がめちゃ重だったので小さめのDockerイメージ作ってみました:kirisaki/overflow - Docker Hub https://hub.docker.com/r/kirisaki/overflow/

6 replies

そういえば、haskell(ghc)は、llvmを吐けるからそれ経由でwasmに...

そういえば、haskell(ghc)は、llvmを吐けるからそれ経由でwasmにできないかなとか思ったけどどうなのかな

5 replies

stack newで新しくプロジェクトを生成した際に予め用意した`.ghci`フ...

stack newで新しくプロジェクトを生成した際に予め用意した.ghciファイルも自動的にそのプロジェクトに入れておく方法ってありますか?

 
:set prompt "> "
 :seti -XOverloadedStrings
 :seti -XScopedTypeVariables
 
 :set -Wall
 :set -fno-warn-type-defaults
 
 :set -DGHCI
 :set +s
 :set +t
 
 :set -package pretty-simple
 
 import Text.Pretty.Simple (pPrint)
 
 :set -interactive-print pPrint


プロジェクトを立ち上げる毎に自分のwikiから.ghciファイルをコピペするのが面倒なんです。かといってグローバルに設定すると色々問題がありそう(どのPreludeを使ってるのかわからなくなるとか)。

4 replies

1.15.1のDhallでInject, Interpretの型クラスインスタン...

1.15.1のDhallでInject, Interpretの型クラスインスタンスを定義した際に以下のように定義して、dhallファイルをパースしようとすると無限ループにはまるのですが、回避策などはありますか。

data Person = Person {
      pName :: !Text
    , pAge  :: !Natural
    } deriving (Eq, Show)

instance Interpret Person where
    autoWith _ = autoWith $ defaultInterpretOptions {fieldModifier = T.drop 1}

instance Inject Person where
    injectWith _ = injectWith $ defaultInterpretOptions {fieldModifier = T.drop 1}


Interpretなら以下の方法で定義すればいいんだけど、
http://hackage.haskell.org/package/dhall-1.15.1/docs/Dhall.html#t:RecordType

instance Interpret Person where
    autoWith _ = record $ 
        Person <$> field "name" strictText 
               <*> field "age" natural


Injectの場合、dhall-1.15.1ではdefaultInterpretOptionsを使う以外方法が見当たらないのです。

13 replies

早速で恐縮なんですが,現在スタンドアローンのWin7環境でHaskellPlat...

早速で恐縮なんですが,現在スタンドアローンのWin7環境でHaskellPlatform(GHC 8.4.3)を使って作業をしています.csvデータを取り込みたく,以下のパーサーをReal World Haskell 等見ながら作成してみました.数100mのファイルなら問題なく動くのですが,4Gくらいになるとメモリヒープを起こします.マシンのメモリは128積んであるので,読めないことはないと思うのですが,理由がわかりません.ご知見ありましたら,ご教示いただければ幸いです.

57 replies

stackって「特定のbinをstackローカルのbinパス以外にインストールす...

stackって「特定のbinをstackローカルのbinパス以外にインストールする」という用途は想定していないんですかね。stack環境無しでも動くexeを作って圧縮して配布、みたいな事を考えた場合はcabalでビルドする事を考えないと駄目でしょうか

7 replies

hoogleのようなツールを用いて、型の定義やエイリアスのみを検索する良い方法は...

hoogleのようなツールを用いて、型の定義やエイリアスのみを検索する良い方法はありますか?hoogleで普通に検索するとほとんど関数しかヒットせず、困る場面は少ないけどちょっと不便だなと思っています。

6 replies

Lensの `over` 関数の、Functorな値を返す関数を渡すバージョンっ...

Lensの over 関数の、Functorな値を返す関数を渡すバージョンってないんですかね。
型宣言で言うと overM :: Functor f => ASetter s t a b -> (a -> f b) -> s -> f t みたいな型になるのかな、と思うのですが。

4 replies

:thinking_face: `f :: Monad m =&gt; a -&...

🤔 f :: Monad m => a -> b -> m c なアクションと
x :: m a, y :: m b な値があるとき
join (f <$> x <*> y)
と書くのが一番簡潔な書き方なんですかね。
ほかにあるかな。 f の引数が3つ以上の時もいけるっぽいです。

7 replies

dhall で型などを別ファイル(例えば `types/hoge_type.dh...

dhall で型などを別ファイル(例えば types/hoge_type.dhall )で定義して参照すると相対パスになるから cat tmp/hoge.dhall | dhall と実行するとうまくいかないんですけど良い方法ありますか?

6 replies

stack repl 起動中に cabal ファイル(や package.yam...

stack repl 起動中に cabal ファイル(や package.yaml)を更新したときにそれらをリロードすることってできますかね?

7 replies

「MonadPlusは高階なモノイドである」っていう主張、妥当か否か? (e.g...

「MonadPlusは高階なモノイドである」っていう主張、妥当か否か?
(e.g. MonadPlus Maybe は Nothing mplus Just = Just かつ右についてもそう)

8 replies

<http://fumieval.hatenablog.com/entry/20...

http://fumieval.hatenablog.com/entry/2018/10/31/150056 最近の議論を受け、取り急ぎ「束縛」という言葉の使い方についての記事を執筆しました。なるべく正確を期したつもりですが、もし不適当な記述があればご教示ください

121 replies

ここで質問するか、randomチャンネルで質問するか迷ったのですが、 こちらで書...

ここで質問するか、randomチャンネルで質問するか迷ったのですが、 こちらで書かせて頂きますね。 どうして data T = forall a. Show a => T a deriving Show ってのはだめなんでしょうか、無論自分でインスタンスを書けばShowのインスタンスになるのは当然なんですが、 変数a は必ずShowのインスタンスである事が保障されてるので Showのインスタンスは機械的に導けると思うのですが。 例えば、T 型でEq を導きたいとかなら変ってくるとは思いますが。

2 replies

GHCの言語拡張のうち、デフォルトで有効になっているものの一覧ってどこにありまし...

GHCの言語拡張のうち、デフォルトで有効になっているものの一覧ってどこにありましたっけ。。。user guideのどこかにあったようななかったような。。。

6 replies

osx上でstackを使って`HDBC-postgresql`をビルドすると、`...

osx上でstackを使ってHDBC-postgresqlをビルドすると、pgtypes.h (https://github.com/hdbc/hdbc-postgresql/blob/master/pgtypes.h)で定義されてる定数が存在しないとのようなエラーが起きて困っています。
環境により発生したりしなかったりするようで、私自身は再現できず、まだ深く追えてないのですが、この問題に見覚えがある方いませんでしょうか?

  [2 of 2] Compiling StackSetupShim   ( /Users/xxx/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /private/var/folders/hj/07whzwn919z_mltvgj717dy80000gp/T/stack29944/HDBC-pos
t/x86_64-osx/Cabal-2.2.0.1/setup/StackSetupShim.o )
    Linking /private/var/folders/hj/07whzwn919z_mltvgj717dy80000gp/T/stack29944/HDBC-postgresql-2.3.2.5/.stack-work/dist/x86_64-osx/Cabal-2.2.0.1/setup/setup ...
    Configuring HDBC-postgresql-2.3.2.5...
    Preprocessing library for HDBC-postgresql-2.3.2.5..
    /private/var/folders/hj/07whzwn919z_mltvgj717dy80000gp/T/stack29944/HDBC-postgresql-2.3.2.5/PTypeConv.hsc:53:16: error: use of undeclared identifier 'PG_TYPE_CHAR'
	hsc_const (PG_TYPE_CHAR);     
(省略)
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    20 errors generated.
    compiling .stack-work/dist/x86_64-osx/Cabal-2.2.0.1/build/Database/HDBC/PostgreSQL/PTypeConv_hsc_make.c failed (exit code 1)

3 replies

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