gpt4 book ai didi

pointfree - 具有多个函数参数的无点表示法

转载 作者:行者123 更新时间:2023-12-05 00:27:54 25 4
gpt4 key购买 nike

我正在尝试移植以下 Haskell 代码 (http://codepad.org/MMydRCxo)

foo :: Int -> Int -> Int -> Maybe Bool
foo a b c = if a == 1 then Just True else Nothing

bar :: Int -> Int -> Bool
bar b c = maybe False id $ foo 1 b c

-- point free
bar' :: Int -> Int -> Bool
bar' = ((maybe False id $) .) . foo 1

main = do
print $ bar 2 3
print $ bar' 2 3

到榆树,但还没有运气。 ( http://share-elm.com/sprout/5271f160e4b03cf6e675bc97)
foo : Int -> Int -> Int -> Maybe Bool
foo a b c = if a == 1 then Just True else Nothing

bar : Int -> Int -> Bool
bar b c = maybe False id <| foo 1 b c

-- point free
bar' : Int -> Int -> Bool
bar' = ((maybe False id <|) .) . foo 1

main = flow down [
asText <| bar 2 3
, asText <| bar' 2 3]

如果有可能在 Elm 中使这个工作点免费,有什么想法吗? :)

多比

最佳答案

您可以尝试摆脱 <|并使用前缀表示法中的组合函数。
它将首先创建一个带参数的函数,并让该函数组成 foo 1 .

这样,调用bar' 2将返回采用最后一个参数的组合函数。
IE。 (http://share-elm.com/sprout/52720bc5e4b03cf6e675bcc8):

foo : Int -> Int -> Int -> Maybe Bool
foo a b c = if a == 1 then Just True else Nothing

bar : Int -> Int -> Bool
bar b c = maybe False id <| foo 1 b c

bar' : Int -> Int -> Bool
bar' = (.) (maybe False id) . foo 1
-- the explicit evaluation precedence being: ((.) (maybe False id)) . (foo 1)

main = flow down [
asText <| bar 2 3
, asText <| bar' 2 3]

关于pointfree - 具有多个函数参数的无点表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19699575/

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