ハスケルでかなりの経験をして、私はちょうど定理証明のためにIdrisを使い始めました。これは、単純なステートメントを証明しようとしたときに直面した問題を示す最小限の例です。 たちが総機能test持って考えてみましょう。もちろん total test : Integer -> Integer
test 1 = 1
test n = n
を、私たちは関数がtest n = nに単純化することが
公式のIdrisチュートリアルのいくつかの例を読んで遊んでいると、怠惰な評価に関してちょっと混乱しました。イドリスが先行評価を使用してチュートリアルに記載された、および遅延評価を使用して、彼らはこれが ifThenElse : Bool -> a -> a -> a
ifThenElse True t e = t
ifThenElse False t e = e
適切ではない例を与えるため
次のコードを提示:私は他のいくつかの方法でこのコードを再書かれているが、イドリスは合計としてそれを認識することができません TotalityOrWhat.idr:17:3:
TotalityOrWhat.parseDriver, parseDriver' is possibly not total due to recursive path
TotalityOrWhat.parseDriver
Idrisのチュートリアルに従っており、従属ペアとFinで を実験したかったのです。 次のコードはIdrisにチェックを入れません。 data Fin : Nat -> Type where
FZ : Fin (S k)
FS : Fin k -> Fin (S k)
P : (Fin 1) -> Type
P FZ = Char
vec : DPair (Fin 1
私はIdrisを初めて利用しています。私は有界数を記述するデータを作成する必要があります。だから私は、このようなコンストラクタで、このようなデータを作りました: data BoundedDouble : (a, b : Double) -> Type where
MkBoundedDouble : (x : Double) ->
{auto p : a <= x &&
は、私はたくさん最近イドリースで実験し、以下の「セットのタイプレベルの定義」を思い付いています: mutual
data Set : Type -> Type where
Empty : Set a
Insert : (x : a) -> (xs : Set a) -> Not (Elem x xs) -> Set a
data Elem : (x : a
私はIdrisインターフェイスを使用して簡単な代数構造階層を実装しようとしています。イドリスはこの奇妙なエラーメッセージを与えている、 module AlgebraicStructures
-- definition of some algebraic structures in terms of type classes
%access public export
Associati
data A = B | C Int
implementation Semigroup A where
B <+> x = x
x <+> B = x
C m <+> C n = C (m + n)
私イドリス0.11.2で ./Nodes/Test.idr:3:1: error: expected: ";",
"|", declaration, e