另一个选项是连字符,可以在here 找到。基本用法如下所示:
>>> import hyphen, hs.Prelude
>>> hs.Prelude.sum([1,2,3]) # list converted to Haskell list
6
>>> hs.Prelude.drop(5, "Hello, world")
", world"
>>> hs.Prelude.drop(1, [1,2,3])
<hs.GHC.Types.[] object of Haskell type [GHC.Integer.Integer], containing '[2,3]'>
>>> list(hs.Prelude.drop(1, [1,2,3])) # Convert back to Python list
[2, 3]
与其他答案中的其他选项相比,这似乎是一个轻量级的解决方案。
作为额外重量的回报,您似乎获得了从 Haskell 到 Python 的完整桥梁。而HaPy 和github.com/nh2/call-haskell-from-anything 仅允许您使用 Python 中的 Haskell 函数,前提是该 Haskell 函数的所有参数都来自相当基本的类型并返回相当基本的类型,hyphen 似乎允许您使用 arbitrary 函数。它可以做到这一点,因为它在 python 中引入了一种表示 Haskell 堆上的任意对象的类型。
这些“从 python 中查看的 haskell 对象”表现得非常好,就像 python 对象一样。例如 Haskell Maps 的行为有点像字典:
>>> import hs.Data.Map
>>> my_map = hs.Data.Map.fromList([(1, 'Hello'), (2, 'World')])
>>> my_map[1]
'Hello'
>>> print(sorted([key for key in my_map]))
[1, 2]
更多示例请参见自述文件!
它似乎还可以处理各种奇特的事情,例如在 Haskell 和 Python 之间转换异常。