2

自己チェックの例のために、次のコードを実行しました。

assert :: Bool -> Bool -> String -> IO ()
assert actual expected description
    | expected == actual     = do { print "" }   -- need a better way to do nothing
    | otherwise              = error description

main _ = do
    assert (odd 2) false "2 is not odd"
    assert (odd 3) true  "3 is odd"

私はこれが完璧ではないことを知っています (アドバイスは大歓迎です) が、現在の問題は、assert の定義をモジュール util.Assertions に入れると、2 つのアサーションを使用するとコンパイルに失敗することです

build/realworld/chapter2/FunctionApplication.java:168: error: cannot access ?
              Assertions.?._assert?.apply(
                        ^
class file for util.Assertions$? not found
1 error
E .../Real_World_Frege/chapter2/FunctionApplication.fr:24: java compiler errors are most likely caused by erronous
native definitions

アサーションが1つしかない場合に機能するため、クラス自体はCP上にあり、モジュールのインポートは原則として機能します。なにが問題ですか?

4

1 に答える 1

2

関数の結果は、がaassertの形式の型になります。したがって、「何もしない」ための最良の方法は、ただm ()mMonad

return ()

あなたの質問の2番目の部分については、何が悪いのか本当に想像できません。私がダウンロードして自分で試すことができるように、あなたの github リポジトリを手配してください。また、使用するコンパイル コマンドと作業ディレクトリを指定します。

(ちなみに、Unicode を表示できるターミナル エミュレータを使用する必要があります。Windows では、試してくださいchcp 65001)

于 2013-09-13T17:47:33.077 に答える