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