我想要这样的东西。有可能吗?
something :: String
something =
let
type FirstName = String
type LastName = String
fullName :: FirstName -> LastName -> String
fullName = a ++ " " ++ b
in
fullName "Haskell" "Curry"
我一直在努力寻找能做到这一点的语言扩展,但没有成功。
直接答案是否定的,类型定义只能在模块级别上进行。
类似的事情是可能的:
let
fullName ::
(firstName ~ String, lastName ~ String) =>
firstName -> lastName -> String
fullName a b = a ++ " " ++ b
in
_