1:([2]) 按预期工作.
1:$[2] 给 <interactive>:15:2: Not in scope: data constructor `:$'
我认为$运算符将其后的所有内容括起来:
Haskell:两者之间的区别.(点)和$(美元符号)
到底是怎么回事?
我试图找出如何否定两个参数布尔函数的结果,如not . any.我理解为什么它不能通过如下所示分解它,但我不知道如何编写一个优雅地执行此操作的函数.我设法做到了curry $ not . uncurry any
Prelude> :t not
not :: Bool -> Bool
Prelude> :t any
any :: Foldable t => (a -> Bool) -> t a -> Bool
Prelude> :t (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
curry $ not . uncurry any
:: Foldable t => (a -> Bool) -> t a -> Bool
Run Code Online (Sandbox Code Playgroud) 这类似于lower_boundC++,二进制搜索的Javadoc也提到了这一点:"搜索键的索引,如果它包含在数组中;否则,( - (插入点) - 1)."
我已经能够通过一些例子验证它是真的,我很确定它是真的.但是,我无法证明这一点,所以我不确定.
我试图通过矛盾来做某种证明.它沿着这条线运行:如果元素在那里,那么我们必须通过消除包含该元素的范围来错过它.潜在位置和它应该是的位置之间的差距必须是最小的.最后,如果有两个元素,并检查第一个元素,那就是元素,或者元素可能位于的元素后面的元素.
我也试着考虑减少存在元素的情况,没有元素的情况,但这种方法无处可去.我觉得我正在挥舞着证据并抓住吸管.
问题中的陈述是真的吗?如果是这样,你能证明吗?