玩purescript并遇到字符串连接的奇怪问题.我已经加载和进口的Prelude,Data.List,Data.Maybe,和Data.String(也试过进口Data.Array),但PSCI仍然不能识别(++).这表明(++)任何一个导入的模块中都没有包含(在这种情况下,指向要导入的相应模块的指针),或者当我安装purescript并设置我的环境时会出现一些奇怪的问题.我发现后者不太可能,但嘿,我会保持我的考虑因素.
提前致谢!
所以我注意到在n = 20之后,LearnYouAHaskell(下面)中给出的阶乘函数因为Int类型的有限工作范围而缩小.
factorial :: Int -> Int
factorial 0 = 1
factorial n * factorial (n-1)
Run Code Online (Sandbox Code Playgroud)
使用factorial :: Integer -> Integer修复问题很好,但它让人想起了这个问题.假设整数比Int稍微慢一点(我知道我在这里捏便士)我希望我的阶乘函数只在输入大于20时才使用Integer并保留Int->Int较小数字的类型.似乎应该有一个优雅的解决方案,使用if-then-else或警卫,但继续运行语法胡椒(错误消息)
假设我正在生成元组,我想在它们到来时将它们连接起来.我该怎么做呢?以下是元素添加:
如果ts = ("foo", "cat"),t = ("bar", "dog")
ts += t给ts = ("foobar", "catdog"),
但我真正想要的是ts = (("foo","cat"),("bar","dog")).
所以我想第一个问题是"Chapel是否支持元组连接?",然后"它是否有二元运算符/函数?",然后"如果没有,这是一个很好的方法吗?",最后"make如果你懂得更好的生活方式,我的生活会更轻松".
请按顺序解决问题.
我很感激帮助!!
看到Maybe类型与null和singleton列表的集合是同构的,为什么当我只能使用列表来容纳缺席时,是否有人想要使用Maybe类型?
我不确定我的问题是什么。我有三个模块 A.hs、B.hs 和 C.hs。所有都位于C:\..path...\folder并且模块 B 和 C 都从 A 导入。
也就是说,模块 B 和 C 都包含行 import A
我可以:l C:\..path..\folder\A.hs在 gchi 中玩它的内容;但是,当我尝试:l C:\..path..\folder\B.hs或:l C:\..path..\folder\C.hs
Could not find module `A'
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪,因为我可以轻松地将 B.hs 编译为 B.exe 并运行可执行文件。如何编译和运行无法加载到 ghci 中的模块?或者,为什么在编译时导入成功但加载失败;尤其是当导入的那个模块本身可以加载时?
所以我正在玩GHCi中的hasbolt模块,我对一些贬低有好奇心.我通过创建管道连接到Neo4j数据库,如下所示
ghci> pipe <- connect $ def {credentials}
Run Code Online (Sandbox Code Playgroud)
这工作得很好.但是,我想知道(<-)运营商的类型是什么(GHCi不会告诉我).最令人沮丧的解释描述了这一点
do x <- a
return x
Run Code Online (Sandbox Code Playgroud)
des to to to
a >>= (\x -> return x)
Run Code Online (Sandbox Code Playgroud)
但是这条线x <- a怎么样?它并不能帮助我在加return我想是因为pipe :: Pipe没有pipe :: Control.Monad.IO.Class.MonadIO m => m Pipe,但(>>=) :: Monad m => m a -> (a -> m b) -> m b这样尝试使用到desugar bind和return/ pure不无它的工作.
理想情况下,似乎最好只创建一个Comonad实例来启用使用extract :: Monad m => m a -> a …
monads haskell functional-programming syntactic-sugar comonad
所以我在Haskell中看到了点自由转换的算法, 但是如果我要删除的点隐藏在列表中怎么办?例如,如下所示的一行?
AllNsTill n x = [n,2*n..x]
Run Code Online (Sandbox Code Playgroud) 所以我正在写一行来获取列表的倒数第二个元素.最初我的代码是
mySLast x = last.take ((length x) - 1) x
Run Code Online (Sandbox Code Playgroud)
哪个last功能一直有效.意识到我的take业务已经包含在Haskell中,init所以我改写为
mySLast = last.init
Run Code Online (Sandbox Code Playgroud)
这仍然不起作用.我觉得这是令人费解,因为init::[a]->[a]和last::[a]->a所以他们绝对应该在组合的同态Hask类别.
我试过问Haskell它认为类型是什么,它说
ghci> :t last.init
last.init :: [c] -> c
ghci> last.init [3,2,4,1]
<interactive>:45:6:
Couldn't match expected type ‘a -> [c]’
with actual type ‘[Integer]’
Relevant bindings include
it :: a -> c (bound at <interactive>:45:1)
Possible cause: ‘init’ is applied to too many arguments
In the second argument of ‘(.)’, namely ‘init [3, …Run Code Online (Sandbox Code Playgroud)