添加在数学上保持关联属性:
(a + b) + c = a + (b + c)
Run Code Online (Sandbox Code Playgroud)
在一般情况下,此属性不适用于浮点数,因为它们表示有限精度的值.
作为优化的一部分,是否允许编译器在从C程序生成机器代码时进行上述替换?它在C标准中的确切位置在哪里?
我推出了自己的elem函数,称为elem'
elem' :: (Eq a) => a -> [a] -> Bool
elem' n ys = foldl (\acc p -> if (p == n) then True else False) False ys
Run Code Online (Sandbox Code Playgroud)
似乎有效,但我想在 GHCi 中快速检查它,所以我 import Test.QuickCheck
verboseCheck (\a -> (\xs ->( (elem' a xs) == (elem a xs)) ) )
Run Code Online (Sandbox Code Playgroud)
在测试函数上没有类型声明它测试正常,但那是因为它只测试空输入。
我的测试函数类型声明有问题:
verboseCheck (\a->(\xs->((elem' a xs)==(elem a xs))) :: Int->[Int]->Bool)
verboseCheck (\a->(\xs->((elem' a xs)==(elem a xs))) :: Char->[Char]->Bool)
Run Code Online (Sandbox Code Playgroud)
第一个错误:
• Couldn't match expected type ‘[Int] -> Bool’
with actual …Run Code Online (Sandbox Code Playgroud) 所以我最近开始使用TI的CC2650设备,并试图通过研究他们的一些示例应用程序来学习如何编程.我看到以这种格式声明了很多变量,我不知道它意味着什么:
var1 = x | y | z;
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,var1类型为uint8_t.