gpt4 book ai didi

javascript - purescript FFI 类型可安全导入 javascript 函数

转载 作者:太空宇宙 更新时间:2023-11-04 15:30:27 26 4
gpt4 key购买 nike

尝试使用 purescript FFI,并按照“Purescript By Examples”一书,我创建了一个 JS 文件来获取数组的头部:

exports.head = function(arr) {
return arr[0];
};

在 purescript 中,我为 head 的类型签名声明了一个新的 Undefined 数据,以指示数组为空时返回的 undefined:

foreign import data Undefined :: Type -> Type
foreign import head :: forall a. Array a -> Undefined a

现在,如何使用 Undefine a 类型的值?我需要定义什么函数来提取a以便我可以在其他地方使用它?书中的示例仅定义一个函数:

foreign import isUndefined :: forall a. Undefined a -> Boolean

如:

exports.isUndefined = function(value) {
return value === undefined;
};

但我需要类似的东西:

foreign import getFromUndefined :: forall a. Undefined a -> a

是否可以用 JS 编写该函数,在这种情况下,当 Undefine a 确实是 undefined 时返回什么?或者,我可以重新定义类型未定义的a以允许对其进行模式匹配以提取 a吗?

最佳答案

你可以实现类似的东西

foreign import fromUndefinedWithDefault :: forall a. a -> Undefined a -> a

而是通过重用您所做的定义 isUn​​defined

你写的类型无法安全地实现,因为我可以用它来定义

bad :: Void
bad = getFromUndefined (head [])

关于javascript - purescript FFI 类型可安全导入 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44832950/

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