質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

Q&A

解決済

1回答

351閲覧

Haskell:stack で import Control.Monad.Free が曖昧であるとエラーが出た。曖昧性を除去したい。

myoon

総合スコア100

Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

1グッド

0クリップ

投稿2019/03/26 15:44

編集2019/03/26 15:52

大昔、C言語をかじった者です。
手続き型言語以外のパラダイムも知りたいとHaskellを学びはじめたのですが。
自由モナドを知りたいと思い
import Control.Monad.Free
というソースを書いてみたところ、そんなパッケージは見つからないと叱られました。
そこで、うっかり
stack install control-monad-free

stack install free
を両方行ってしまったら、今度は
Control.Monad.Free が曖昧である。旨のエラーが出ました。
どうやら、freeのみinstallするべきだったようです。
しかしstack uninstall は非推奨とのことで、control-monad-free のinstallをなかったことにする方法が分かりません。
このような場合、曖昧性を除去するためにはどうしたらいいのでしょうか?
haskell も stack も超初心者でいまだ使い方もよく分かっていません。
たまたま「ファンクターがあれば、それを使ってモナドが作れる筈だ。役に立つかどうか分からないが」と考えて、自由モナドの車輪の再発明をしてしまったようです。どうも役に立つようです

取り敢えず、自力で考えたものが一般に流布されているものに一致しているか?答え合わせをしたいのですが、一般論としてモジュール名が重なって曖昧になった場合の対処法をお聞きしたいです。

OSはlubuntuで /etc/os-release
では、
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
です。

igrep👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Haskell, というかGHCのパッケージは、モジュール名とパッケージ名が1対1に対応していないのが悩ましいですよね。
そのような場合、PackageImports というGHCの言語拡張を使ってください。

例えばfreeパッケージのControl.Monad.Freeimportしたい場合は、下記のように書きます。

{-# LANGUAGE PackageImports #-} -- ^ GHCの言語拡張は、このように特殊なコメントで宣言します。 -- `module` よりも前で宣言するのがポイントです。 module ModuleUsingFree where import "free" Control.Monad.Free

GHCiで試す場合は、下記のように入力してください。

> :set -XPackageImports > import "free" Control.Monad.Free

投稿2019/03/26 23:00

編集2019/03/26 23:02
igrep

総合スコア428

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

myoon

2019/03/27 05:33

ありがとうございます!! 曖昧性が解決しました。 別のエラーが出ましたが、私の方のバグでしょう。解決できない場合は別質問とします。感覚がCなどと違うので慣れるまでが大変です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問