我是Scala的初学者,来自面向对象的范式.在理解Scala的函数编程部分时,我被引导到Haskell--纯函数式编程语言.
探索SO问答,我发现Java - Haskell具有互操作性.
我很想知道Scala-Haskell的互操作性是否同样存在?
可以在Scala应用程序中使用用Haskell编写的函数库吗?
根据Don Stewart给出的答案:这是可能的.
在Scala应用程序中集成Haskell函数库将是简单易行还是需要复杂的调整?
使用集成的Haskell函数库,Scala应用程序将在JVM上运行还是需要不同的安排?
我在LYAH练习.
phoneBook.hs文件包含以下代码:
phoneBook :: [(String,String)]
在尝试编译上述代码时,我收到以下错误:
*Main>:load"/home/optimight/phoneBook.hs"[1/1]编译Main(/home/optimight/phoneBook.hs,解释)
/home/optimight/phoneBook.hs:1:1:`phoneBook'的类型签名缺少附带的绑定失败,模块加载:无.
在对此答案进行回答之后添加了问题以及随后对此答案的评论:我们如何为上述类型签名提供实施?
如果我添加这个:
type phoneBook = [(String,String)]
我收到以下错误:
Prelude>:load"/home/optimight/phoneBook.hs"[1/1]编译Main(/home/optimight/phoneBook.hs,解释)
/home/optimight/phoneBook.hs:2:6:类型或类声明格式错误:phoneBook失败,模块加载:无
为什么我被迫写liOfLi代替LiOfLi?请指导.
baby.hs中的代码
LiOfLi = [[1,3,4,5,6,8],[12,13,15,16,19,20],[23,24,25,45,56]]
ghci回复:
ghci>:l baby
[1/1]编译Main(baby.hs,解释)
失败,模块加载:无.ghci> baby.hs:29:1:不在范围内:数据构造函数`LiOfLi'
将首字母更改为较小的情况时
baby.hs中的代码
liOfLi = [[1,3,4,5,6,8],[12,13,15,16,19,20],[23,24,25,45,56]]
ghci回复:
ghci>:l baby
[1/1]编译Main(baby.hs,解释)
好的,模块加载:Main.
以下是我提到的SO问题,但我没有理解规则/逻辑,并得到(我)上述问题的答案.
变量名称必须小写.与此相关的官方文档位于haskell.org/onlinereport/intro.html#namespaces - (SO评论) Chris Kuklewicz
从哪里可以获得Haskell代码编写的完整缩进规则集?
过去的SO问题与我的以下问题类似,这使我提出上述问题.什么是错误讯息背后的原因:parse error on input 'something'?
我得到的错误信息:
baby.hs:103:2:输入`myList'时解析错误(此行中的错误)
代码我正在尝试编译:
myList = ["aeroplane", "Aeroplane", "AeRoPlAne", "helicopter", "HELICOPTER", "Zebra"]
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
let smallerSorted = quicksort [a | a <- xs, a <= x]
biggerSorted = quicksort [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ biggerSorted
Run Code Online (Sandbox Code Playgroud)
由Optimight编辑:
我将问题中的代码转移到新的.hs文件并尝试编译它.仍然存在类似的错误消息.详情如下:
错误
quickSort.hs:5:62:解析错误输入`='失败,模块加载:无.(0.02秒,0字节)代码quicksort ::(Ord a)=> [a] - > [a]
quicksort [] = [] quicksort(x:xs)= let …
什么是文学编程?引用Knuth博士的话:"主要的想法是将一个程序视为与人类的交流,而不是作为计算机的一套指令."
生成haskell应用程序项目文档的常用方法是什么?请提及每种方法的主要强度区域/主要优点.
我是一个绝对的初学者.使用emacs通过LYAH.
我目前的设置:
在这里描述的第2点找到难以遵循的指令(带来haskell库).
还需要指导才能启用Scion IDE.
问题:
.hs代码
data Maybe a = Nothing | Just a
Run Code Online (Sandbox Code Playgroud)
在运行代码时,我收到以下错误:
请忽略拼写错误,原贴:
*Main> just "Haha"
Run Code Online (Sandbox Code Playgroud)
互动>:339:1:不在范围内:'只是'
这是真正的错误(在Tikhon Jelvis的评论之后添加):
*Main> Just "Haha"
interactive>:341:1:
Ambiguous occurrence `Just'
It could refer to either `Main.Just',
defined at /home/optimight/baby.hs:89:26
or `Prelude.Just',
imported from `Prelude' at /home/optimight/baby.hs:1:1
(and originally defined in `Data.Maybe')
Run Code Online (Sandbox Code Playgroud) 作为haskell的绝对初学者,我不断阅读有关haskell的各种文章,pdf和教程.大多数示例/示例代码包括数学字符.即使是打字的常见任务
- >
我必须输入: - &>
事实是我不知道如何在emacs中键入数学字符(我用于练习haskell编码).我目前的键盘布局是"英国美国".
是否有任何特定的键盘或键盘布局最适合输入数学符号(用于haskell编程)?
haskell是否将所有Math符号作为函数?我目前的假设是haskell必须支持所有数学符号作为函数.
例如+, - ,/,*等
Unicode Math Symbols 注意:许多haskell论文中都有这些符号.
helloworld.hs中的代码:
main = do
putStrLn"你好,你叫什么名字?"
name < - getLine
putStrLn("嘿"++名称++",你摇滚!")
终端应用测试:
optimight @ optimight:〜$ ghc --make helloworld
[1 of 1]编译Main(helloworld.hs,helloworld.o)
链接helloworld ...
optimight @ optimight:〜$ ./helloworld
你好,你叫什么名字?
约翰
嘿约翰,你摇滚!
在emacs中加载helloworld.hs - haskell主要模式:
GHCi,版本7.4.1:http ://www.haskell.org/ghc/:?求助于
加载包ghc-prim ...链接...完成.
加载包integer-gmp ...链接...完成.
加载包基...链接...完成.
Prelude>:load"/home/optimight/helloworld.hs"
[1/1]编译Main(/home/optimight/helloworld.hs,解释)
好的,模块已加载:Main.
*主要>
现在,如何(程序是什么?)在emacs - haskell模式环境中测试它?(我相信,当我使用emacs - haskell模式时,不需要切换到终端.)
LYAH在派生实例中说"所有的值构造函数都是无效的(不带参数,即字段),我们可以将它作为Enum类型类的一部分."
数据日=星期一| 星期二| 星期三| 星期四| 星期五| 星期六| 星期日
派生(Eq,Ord,Show,Read,Bounded,Enum)
现在,如果我需要几个月,它就会
数据月= 1月| 二月| 三月| 四月| 五月| 六月| 七月| 八月|九月| 十月| 11月| 12月
推导(Eq,Ord,Show,Read,Bounded,Enum)
我的问题是:(1)每月存储最大天数值的位置?(2)如果是闰年,如何提及和控制2月份,那么2月份的maxDays为29天,否则为28天?
在Java中,可以像下面给出的代码:
公共枚举月份{
1月(31),
2月(29日),
3月(31日),
4月(30日),
5月(31日),
6月(30日),
7月(31日),
8月(31日),
9月(30日),
10月(31),
十一月(30),
十二月(31)
,;
private int maxDays; //实例变量
private(int maxDays){//构造函数总是私有
this.maxDays = maxDays;
}
公众诠释getMaxDays(){
返回maxDays;
}
如果我想在 Neo4j 浏览器中输入查询时遵循 Cypher 样式指南,则“Enter”或“Return”键会执行查询,而我想在新行上开始一个新子句以写入查询的剩余部分。
如果“Enter”或“Return”键执行查询,那么允许我在新行上开始新子句的键盘键或组合键是什么?
请指导。