1
A
回答
1
短篇小說:使用find_consts
長篇:
這是一個如何,要征服這樣的問題。
在Main
,有List.dropWhile
List.dropWhile :: "('a => bool) => 'a list => 'a list"
然而,只有從一開始就刪除。這可能不是預期的功能。
value "List.dropWhile (λ x. x = ''c'') [''c'', ''c'', ''d'']"
"[''d'']"
value "List.dropWhile (λ x. x = ''c'') [''d'', ''c'', ''c'']"
"[''d'', ''c'', ''c'']"
手動方法
我們可以寫一個函數自己從而消除所有出現
fun dropAll :: "('a => bool) => 'a list => 'a list" where
"dropAll P [] = []"
| "dropAll P (x # xs) = (if P x then dropAll P xs else x # (dropAll P xs))"
搜索庫
但是,此功能相當於與過濾¬ P
我們如何找到這樣的庫函數?
如果我們知道了我們想要做的簽名,我們可以使用find_consts
find_consts "('a ⇒ bool) ⇒ 'a list ⇒ 'a list"
它從主返回3個功能,與簽名:List.dropWhile
,List.filter
,List.takeWhile
現在,讓我們表明我們不需要dropAll
,但可以使用filter
。
lemma "dropAll P l = filter (λ x. ¬ P x) l"
apply(induction l)
by simp_all
建議您不要實施之類的東西dropAll
自己而使用的過濾器。因此,所有經證實可用於filter
的詞條都是可用的。
提示
提示:我們可以使用便捷的列表理解語法來寫例如過濾器表達式
lemma "filter (λ x. ¬ P x) l = [x ← l. ¬ P x]" by simp
1
一個辦法,找出你所期望存在的功能是從伊莎貝爾文檔文件What's in Main。它簡要概述了Isabelle/HOL的理論Main
提供的主要類型,功能和語法。
如果您查看該文檔中的列表部分,您會發現功能似乎具有正確類型的功能filter
。
相關問題
- 1. 除去某些類的所有元素的刪除屬性禁用
- 2. 如何刪除沒有屬性和子元素的元素?
- 3. 刪除列表中的所有N個元素
- 4. 刪除DOM中所有元素的屬性
- 5. 如何刪除列表中的元素?
- 6. 從元組列表中刪除所有出現的元素
- 7. 從所有HTML元素中刪除屬性標題
- 8. 如何從列表中刪除元素
- 9. 如何排除具有某些屬性的元素?
- 10. 如何從元素中刪除某個類型的所有事件
- 11. 如何刪除matlab中所有相同元素的列?
- 12. 如何從陣列中刪除元素並將所有元素都移動到某個點上?
- 13. 刪除元素,並從列表中刪除下列元素
- 14. 刪除元素,如果它有一個特定的屬性
- 15. 如何一次移除例如td元素的所有屬性?
- 16. 如何列出JS中的所有元素屬性?
- 17. 如何從一個列表中刪除元素,如果其他列表包含要刪除元素的索引
- 18. 如何刪除Lua表中的所有元素?
- 19. 陣列不會刪除所有元素
- 20. Python中,刪除所有元素的索引列表>ň
- 21. 從列表中刪除特定類的所有元素
- 22. 刪除列表中所有字母的元素?
- 23. 從.clear()刪除鏈接列表中的所有元素java
- 24. 序言:刪除列表中的所有元素高於X
- 25. Java:刪除鏈接列表中的所有元素
- 26. 刪除Python中的某些屬性的所有文件
- 27. 如何刪除列表中的列表中的元素?
- 28. 刪除與屬性值cite_所有元素在Javascript
- 29. 從元素中刪除屬性
- 30. 刪除所有屬性
'find_consts'應該是搜索現有函數時的第一步(大部分時間您對簽名和/或可能的名稱有一個比較特殊的概念)。這在你的長篇博覽會上有點失落。如何將提示移到'find_consts'到最頂端? – chris 2013-03-15 06:02:56