是否有可能定義平等的一個簡單的語法概念(類似於GHC可能會自動導出爲Eq實例哈斯克爾98型),沒有明確地證明每個數據構造函數都是內射的,或者做了類似的事情,比如定義每個構造函數的縮回以及使用cong? 換句話說,是否有可能更直接地利用數據構造函數的注入性,而不是必須爲每個構造函數引入一個輔助函數? 以下以自然數爲例。 module Eq where
open import Functi
我想編寫一些可以處理Haskell中的所有數據類型的函數(至少Data.Data中的所有Data實例)。我遇到的一個普遍問題是根據構造函數是否遞歸來選擇做什麼 - 通過遞歸構造函數我的意思是數據類型是D,並且存在構造函數C,其中一個參數是D. 我可以通過解決一個更簡單的問題來解決上述問題:給定一個數據,確定最外層的構造函數是否是遞歸的。 這裏是嘗試數1: data B a = T | F
gIs
我想描述的整數: data Integer : Set where
Z : Integer
Succ : Integer -> Integer
Pred : Integer -> Integer
?? what else
以上沒有定義的整數。我們需要Succ(Pred x)= x和Pred(Succ x)= x。但是, spReduce : (m : I
是否一些標準的Haskell庫這樣定義 data ListWithEnd e a = Cons a (ListWithEnd e a)
| End e
這是一個列表,其端接元件中攜帶的指定類型的值的數據類型? 所以ListWithEnd()與[]是同構的,而ListWithEnd Void是同構於無限流。或者,不同的觀察,ListWithEnd e a非常接近ConduitM
我試圖建立一個使用Coq的cobordism的歸納類型,以便可以證明cobordism(1-groupoid和2-groupoid)的某些屬性。我使用下面的代碼勒柯克: Unset Automatic Introduction.
Inductive Topo : Set := t | nt.
Definition F (i j : Topo) :=
match i, j with
| t,
data BoolLit = T | F
instance Eq BoolLit where
b1 == b2 = True
data BExp = BoolLit |
Or BExp BExp
bEval :: BExp -> BoolLit
bEval T = T
我得到以下語法錯誤: Couldn't match expected type 'BExp
只包含節點的考慮下面的簡單Tree data Tree =
Leaf
| Node Tree Tree
deriving (Eq, Show)
是有辦法恢復使用遞歸節點的無限量(一個Tree只有Nodes,無葉)? 到目前爲止,我只知道如何返回數據類型,如Boolean和Integer。我該如何着手返回Tree?