Haskell 和 Raku 是非常不同的语言。这很明显。 但是,这并不意味着没有相似之处或共同的想法! 此页面尝试让一个 Haskell 用户启动并运行 Raku。Haskell 用户可能会发现,在用 Raku 编写脚本时,他们不需要放弃所有 Haskelly 的想法。
请注意,这不应该被误认为是初学者教程或 Raku 概述; 它旨在作为具有强大 Haskell 背景的 Raku 学习者的技术参考。
在 Haskell 中, 您有类型级编程, 然后进行值级编程。
plusTwo :: Integer -> Integer -- Types
plusTwo x = x + 2 -- Values
您不要像下面那样在 Haskell 中混合类型和值。
plusTwo 2 -- This is valid
plusTwo Integer -- This is not valid
在 Raku 中, 类型(亦称为类型对象)和值处于同样的级别
sub plus-two(Int $x --> Int) { $x + 2 }
plus-two(2); # This is valid
plus-two(Int); # This is valid
我将再用一个例子来说明 Raku 这个独特之处:
multi sub is-string(Str $ --> True) {}
multi sub is-string(Any $ --> False) {}
is-string('hello'); #True
is-string(4); #False