idris

    7熱度

    2回答

    函數類型我想有一個確定一個類型是函數類型,這樣的功能: isFunction : Type -> Bool isFunction (a -> b) = True isFunction _ = False 這將返回True對所有輸入,但是。我該如何做這項工作?

    3熱度

    2回答

    我可以寫函數 powApply : Nat -> (a -> a) -> a -> a powApply Z f = id powApply (S k) f = f . powApply k f ,並證明平凡: powApplyZero : (f : _) -> (x : _) -> powApp Z f x = x powApplyZero f x = Refl 到目前爲止,一切都

    2熱度

    1回答

    像下面的表達式是非常有效的在伊德里斯: let x = Just 5 in let y = Just 6 in [|x/y|] 有人能寫出像下面的表達式? let x = Just 5 in let y = Just 6 in [| if x == 0 then 0 else y|] 我似乎無法得到它編譯。

    10熱度

    2回答

    人們可以在伊德里斯函數返回一個類型,例如 t : Type -> Type -> Type t a b = a -> b 但是現在的情況上來,我想用->摺疊類型列表(用寫一些解析器實驗時),即 typeFold : List Type -> Type typeFold = foldr1 (->) 這樣typeFold [String, Int]會給String -> Int : Typ

    2熱度

    1回答

    我試圖讓人們可以稱之爲伊德里斯的可判斷的分析器。起初我只是在分析自然數,但遇到了意想不到的問題。產生它的代碼的最小例子是這樣的: data Digit : Char -> Type where Zero : Digit '0' One : Digit '1' digitToNat : Digit a -> Nat digitToNat Zero = 0 digitToN

    8熱度

    1回答

    類型謂詞生成運行時證明我使用此類型推理可以在其上進行可判定的解析字符串: data Every : (a -> Type) -> List a -> Type where Nil : {P : a -> Type} -> Every P [] (::) : {P : a -> Type} -> P x -> Every P xs -> Every P (x::xs) 例如,

    1熱度

    1回答

    我是新來的依賴類型,並且擁有Haskell的經驗,我正在慢慢地學習Idris。爲了鍛鍊,我想寫一個霍夫曼編碼。目前我正試圖寫一個證明,即代碼樹的「扁平化」產生一個前綴代碼,但已經與量詞卡住了。 我有一個簡單的感性主張,一個列表是一個又一個的前綴: using (xs : List a, ys : List a) data Prefix : List a -> List a -> Type

    5熱度

    1回答

    阿格達利用以下操作來套之間表現出相反: _↔_ : ∀ {f t} → Set f → Set t → Set _ 是否有伊德里斯等效?我試圖定義列表上的袋子平等 data Elem : a -> List a -> Type where Here : {xs : List a} -> Elem x (x :: xs) There : {xs : List a} -> El

    1熱度

    1回答

    我正在爲foo一個未解metavariable在下面的代碼: namespace Funs data Funs : Type -> Type where Nil : Funs a (::) : {b : Type} -> (a -> List b) -> Funs (List a) -> Funs (List a) data FunPtr : Funs a

    9熱度

    1回答

    我一直在試驗伊德里斯,它似乎應該很簡單,指定某種類型來表示兩個不同數字之間的所有數字,例如, NumRange 5 10是5到10之間的所有數字的類型。我想包含雙打/浮點數,但是對於用整數相同的類型也同樣有用。我會如何去做這件事?