当谈到theta连接,equijoins和自然连接时,我无法理解关系代数.有人可以帮我更好地理解吗?如果我在theta上使用=符号,那么它与使用自然连接完全相同吗?
我看到并使用了各处的::符号,但仍然不知道::符号在Haskell中编程时的含义,例如
run :: Int -> Int -> Int
-- ??
Run Code Online (Sandbox Code Playgroud)
什么::(双冒号)代表Haskell?
我有一个元素列表,我希望更新它们:
由此: ["Off","Off","Off","Off"]
对此: ["Off","Off","On","Off"]
由于我对Haskell有点新,我一直在(x:xs)!!y使用该函数提取和更新单个组件:
replace y z [] = []
replace y z (x:xs)
| x==y = z:replace y z xs
| otherwise = x:replace y z xs
Run Code Online (Sandbox Code Playgroud)
然后在ghci中输入以下内容: (replace "Off" "On" ["Off",'Off","Off","Off"]) !! 2
我得到以下内容: "On"
我似乎能够提取和转换列表的元素,但我似乎无法获得转换单个元素的列表.
任何有关此事的帮助将不胜感激.
我是Java的新手,只是想确认一下Double是什么?它与Float或Int类似吗?任何帮助,将不胜感激.我有时也会看到大写字母Double,有时则看小写字母double.如果有人能澄清这意味着什么是伟大的!
我只是想知道我在Haskell中设置的递归函数.使用保护通常比递归函数的模式更好吗?
我只是不确定最佳布局是什么,但我知道在定义这样的函数时模式更好:
units :: Int -> String
units 0 = "zero"
units 1 = "one"
Run Code Online (Sandbox Code Playgroud)
更喜欢
units n
| n == 0 = "zero"
| n == 1 = "one"
Run Code Online (Sandbox Code Playgroud)
我只是不确定在递归方面是否相同或不同.
只是不太确定术语:我使用的是这样的东西:
f y [] = []
f y (x:xs)
| y == 0 = ......
| otherwise = ......
Run Code Online (Sandbox Code Playgroud)
或者这会更好吗?
f y [] = []
f 0 (x:xs) =
f y (x:xs) =
Run Code Online (Sandbox Code Playgroud) 我仍然无法理解Haskell ==和=Haskell 之间的区别.我知道前者与重载类型有关,而后者"给出了函数的结果",但我似乎无法理解它!任何帮助将非常感激.
我发现我很少遇到需要使用该where条款的情况.但是,我确实发现我过去经常使用它.何时where使用该子句(即它使用的是什么情况)?我应该在什么情况下使用它?
我注意到了(虽然我曾经被告知(a -> a)并且a -> a意味着同样的事情),但是当我使用时会收到错误消息(a -> a).我应该只(a -> a)在类型中使用括号时使用吗?(即(5 + 3)代替5 + 3)?只是不确定什么时候有必要
我(\\)在Haskell中听到了"列表差异" 运算符这个术语,但仍然不知道如何理解它.任何例子或想法?