gpt4 book ai didi

purescript - 如何将部分函数转换为安全(也许)函数?

转载 作者:行者123 更新时间:2023-12-02 09:46:00 30 4
gpt4 key购买 nike

我希望它更方便地使用库定义的partialfunc,或者使用部分模式匹配编写回调。
像这样,

partialMaybe :: forall a b. (Partial => a -> b) -> a -> Maybe b

我在一些主要图书馆中找不到类似的内容。
如何定义呢?或者已经在库中定义了?

data ABC a = A a | B a | C a

f1 = someHigherOrderFunc $ partialMaybe \(A a) -> someFunc a -- if not 'A', return Nothing.

-- same as
f2 = someHigherOrderFunc $ case _ of A a -> Just $ someFunc a
_ -> Nothing -- requires line break, seems syntax redundant...

使用:purescript 0.11.6

<小时/>

编辑:

我做到了...

partialMaybe :: forall a b. (Partial => a -> b) -> a -> Maybe b
partialMaybe f a = runPure $ catchException (const $ pure Nothing) (Just <<< unsafePartial f <$> pure a)

这……嗯……非常难看。事实并非如此。
purescript 抛出“模式匹配失败”异常。
所以我认为它应该能够通过 purescript 处理。
做不到吗?

最佳答案

如果您希望在遗漏案例时获得异常(exception),请使用Partial。如果您需要其他方式,请使用 MaybeEither 或其他适当的总和类型。

您可以捕获失败的模式匹配引发的异常。失败的模式匹配不可能不抛出异常。

关于purescript - 如何将部分函数转换为安全(也许)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46188249/

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