大きなプロジェクト(いくつかのライブラリといくつかの実行可能ファイルを含む)に私自身のPrelude
を使用することに決めました。 Preludeは一部の部分関数をエクスポートせず、いくつかの共通関数をエクスポートします(つまりControl.Monad
などから)。しかし、私はそれを行う方法と戦っています。私は試しました:「会社」プレリュードを正しく定義する方法
使用
base-noprelude
です。モジュールmy-common-module
にPrelude.hs
を作成します。上記と同じですが、
my-common-module
の代わりにMy.Prelude
を作成してください。他のすべてのモジュールでは、私は矛盾を取得として)1で、私はちょうど、ghci
を実行できないということですimport My.Prelude
問題にファイルprelude/Prelude.hs
を作成し、hs-source-dirs
徒党セクションに入れて、ディレクトリ「前奏曲」を作成base
とmy-common-module
。 2)ghci
で動作しますが、cabal repl
は、 'モジュールを使用しようとしています' Prelude '(prelude/Prelude.hs)が読み込まれていないという不思議なことで失敗します。さらに、base-noprelude
はghcjs
のようには思われません。これはプロジェクトの一部(コード共有)に使用します。
import Prelude()
import My.Prelude
または
{-# LANGUAGE NoImplicitPrelude #-} -- or extensions: NoImplicitPrelude in .cabal
...
import My.Prelude
「伸長:NoImplicitPrelude」が必要とするオプションが最高の私には思える
それは唯一の方法は、現在でそれぞれ、すべてのファイルを開始することであるように思えますインポートするすべてのファイルMy.Prelude
それ以外の場合は動作しません。私はカスタムプレリュードを達成すると同時に、cabal repl
とghcjs
で作業する明白な方法が欠けていますか?
更新:base-nopreludeは、GHC.Eventの再エクスポートを手動で削除したときにGHCJSで動作します。
更新:私はこれで少し時間を費やしました。 1)は正しい道だと私には思われます。 cabal repl
作品(感謝ユーラス)、ghciはghci -hide-package base
と一緒に読み込まれなければならないし、また動作する必要があります。
私はそれを行う方法はないと思う(私は頑張った)。 'Prelude 'モジュールの使用を試みる問題は、[ここ](https://ghc.haskell.org/trac/ghc/ticket/10920)で報告されています。 – Yuras
1)のすべての例を共有できますか?それは私のために働いていないので:( そして、私は今あなたの手助けをした場所を確信しています:) – Yuras
私は 'base-myprelude'という別のカバールプロジェクトを作成しました。これはいくつかのことを定義し、 'Prelude.hs'をエクスポートします(私はいくつかのサブモジュールで' NoImplicitPrelude'を使用しなければなりませんでした)。それから私は私自身のプロジェクトを持っています。私のプロジェクトは、カバールの中では、ベースノップレイド、ベースミプレイドです。私が取り組んでいるプロジェクトは公開されていないので、あなたにレポを指摘することはできません。アップデート: 'cabal repl'は' base-myprelude'では動作しませんが、あなたが求めているのであれば 'my-project'で動作します。 – ondra