2
下面的函數編譯:理解`K:納特** 5 * K = N`簽名
onlyModByFive : (n : Nat) -> (k : Nat ** 5 * k = n) -> Nat
onlyModByFive n k = 100
但到底是什麼k
代表其Nat ** 5 * k = n
語法?
另外,我怎樣稱呼它?這是我的嘗試,但我不明白輸出。答案的
*Test> onlyModByFive 5 5
When checking an application of function Main.onlyModByFive:
(k : Nat ** plus k (plus k (plus k (plus k (plus k 0)))) = 5) is not a
numeric type
源 - https://groups.google.com/d/msg/idris-lang/ZPi9wCd95FY/eo3tRijGAAAJ
謝謝,仙人掌。但是我認爲我的'onlyModByFive'的def是無效的,因爲它根本不涉及'mod',不是嗎?我問了這個後續:http://stackoverflow.com/questions/36531852/function-to-determine-if-nat-is-divisible-by-5-at-compile-time。 –
另外 - 你可以請你推薦任何你已經注意到與證明有關的'Refl'的讀物嗎? –
@KevinMeredith您可以先閱讀http://jozefg.bitbucket.org/posts/2014-08-06-equality.html,並注意到我們正在討論這裏的內涵命題平等。 – Cactus