gpt4 book ai didi

purescript - "foreign import data Foo::Type"和 "data Foo"之间的区别

转载 作者:行者123 更新时间:2023-12-04 23:37:30 24 4
gpt4 key购买 nike

定义外来类型的名义方法之间是否存在功能差异? foreign import data Foo :: Type方法使意图更清晰,但就是这样吗?

最佳答案

尽管它们在表面上看起来很相似,但它们在元语言中的表示方式却大不相同,因为每个解析后都会产生不同的结构(前者是 ExternDataDeclaration ,后者是 DataDeclaration )。

例如,您可以派生数据声明的实例,但为外部数据声明这样做会引发错误。

-- This works
data Empty
derive instance eqEmpty :: Eq Empty
derive instance ordEmpty :: Ord Empty

-- This breaks
foreign import data Empty :: Type
derive instance eqEmpty :: Eq Empty

Error found:

Cannot derive a type class instance, because the type declaration for Empty could not be found.

在国外情况下,您必须自己编写这些实例。

我是 PureScript 的新手,所以我不知道是否还有其他限制会影响一个而不是另一个。我会说,出于所有实际目的,它们是相同的。

关于purescript - "foreign import data Foo::Type"和 "data Foo"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49094268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com