对于Idris的类型驱动开发中的一项练习,我写了以下内容:
myPlusCommutes : (n : Nat) -> (m : Nat) -> n + m = m + n
myPlusCommutes Z m = rewrite plusZeroRightNeutral m in Refl
myPlusCommutes (S n) m =
rewrite myPlusCommutes n m in
rewrite plusSuccRightSucc m n in Refl
Run Code Online (Sandbox Code Playgroud)
然后我想rewrite在REPL中玩转,这样我就可以“看到”幕后发生的事情。我认为以下方法可能会起作用,但事实并非如此。
??> :let m : Nat
defined
??> :let s : (plus 0 m = plus m 0)
defined
??> rewrite plusZeroRightNeutral m in s
rewriting plus m 0 to m did not change type iType
Run Code Online (Sandbox Code Playgroud)
是否可以查看rewrite使用REPL的情况?