Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 请推荐具有模式匹配的解释语言_Python_Ruby_Haskell_Functional Programming_Pattern Matching_Scripting Language_Interpreted Language - Fatal编程技术网

Python 请推荐具有模式匹配的解释语言

Python 请推荐具有模式匹配的解释语言,python,ruby,haskell,functional-programming,pattern-matching,scripting-language,interpreted-language,Python,Ruby,Haskell,Functional Programming,Pattern Matching,Scripting Language,Interpreted Language,我正在寻找一种易于快速编写脚本的解释语言,如or,但更像Haskell语言(即函数式语言) 具体来说,我希望它具有haskell中的模式匹配功能。这样的事情存在吗 编辑:我问这个问题主要是因为我喜欢学习新的语言,我注意到我所学的语言中有一个空白点。 一方面,我解释了Python和Ruby等具有函数元素的动态类型化语言,但并没有把概念看得太远。 另一方面,我有Haskell,它有许多我喜欢的功能特性,但非常严格(即使是简单的程序也要花相当长的时间才能运行)。 我只是想知道是不是有什么东西可以把这些

我正在寻找一种易于快速编写脚本的解释语言,如or,但更像Haskell语言(即函数式语言)

具体来说,我希望它具有haskell中的模式匹配功能。这样的事情存在吗

编辑:我问这个问题主要是因为我喜欢学习新的语言,我注意到我所学的语言中有一个空白点。
一方面,我解释了Python和Ruby等具有函数元素的动态类型化语言,但并没有把概念看得太远。
另一方面,我有Haskell,它有许多我喜欢的功能特性,但非常严格(即使是简单的程序也要花相当长的时间才能运行)。
我只是想知道是不是有什么东西可以把这些差异分开。

Haskell 您可以使用
runhaskell
执行haskell文件。该文件会像python脚本一样立即运行

runhaskell test.hs
打印
你好,沃尔德

如果test.hs包含

main = putStrLn "Hello World!"
斯卡拉 另一种不那么纯粹的语言是Scala。它以JVM为目标,因此可以使用所有Java库。您可以将其用作脚本,包括:

scala test.scala
其中test.scala只是:

println("Hello, World!")
对于模式匹配,存在匹配情况:

def headSafe[A](arg: List[A]):Option[A] = arg match {
  case x::xs => Some(x)
  case _     => None
}
选项
对应于Haskell
可能
monand。 如果您对scala感兴趣,可以看看Haskell 您可以使用
runhaskell
执行haskell文件。该文件会像python脚本一样立即运行

runhaskell test.hs
打印
你好,沃尔德

如果test.hs包含

main = putStrLn "Hello World!"
斯卡拉 另一种不那么纯粹的语言是Scala。它以JVM为目标,因此可以使用所有Java库。您可以将其用作脚本,包括:

scala test.scala
其中test.scala只是:

println("Hello, World!")
对于模式匹配,存在匹配情况:

def headSafe[A](arg: List[A]):Option[A] = arg match {
  case x::xs => Some(x)
  case _     => None
}
选项
对应于Haskell
可能
monand。
如果您对scala感兴趣,您可以查看一下

Haskell易于快速编写脚本……Racket提供了模式匹配,功能强大,而且与脚本语言一样“不纯”。它是否“简单”是非常主观的,就像任何其他语言一样。试试HUGS,它是一个Haskell实现。你为什么想要一个解释器?我发现Ruby有足够的功能感觉。有一个很好的gem叫做haskell,它使编程更接近haskell,可以帮助在设计时捕获许多错误。我很好奇你为什么要特别要求模式匹配,你期望从中得到什么。Haskell很容易快速编写脚本……Racket提供模式匹配,功能强大,而且与脚本语言一样“不纯”。它是否“简单”是非常主观的,就像任何其他语言一样。试试HUGS,它是一个Haskell实现。你为什么想要一个解释器?我发现Ruby有足够的功能感觉。有一个很好的gem叫做haskell,它使编程更接近haskell,可以帮助在设计时捕获许多错误。我很好奇你为什么要问模式匹配的问题,你希望从中得到什么。谢谢,我来看看Scala。谢谢,我来看看Scala。