gpt4 book ai didi

haskell - 如何将函数列表中的每个函数应用于 Haskell 一行中的值

转载 作者:行者123 更新时间:2023-12-04 16:11:38 25 4
gpt4 key购买 nike

在没有答案的情况下填写学习指南。我需要在一行中使用 map 将函数列表 (fs) 中的每个函数应用到一个值 (v)

applyEach :: [a->b] -> a -> [b]
applyEach fs v = map (\v -> fs v) fs

这是我能得到的。我知道我不能将 fs 应用于一个值,因为 fs 是函数列表,但我不知道如何使用列表中的每个函数

最佳答案

您可以使用 $ ( f $ x = f x ) 为此:

Prelude> let fs = [(+1), (+2)]
Prelude> map (\f -> f 2) fs
[3,4]
Prelude> map ($ 2) fs
[3,4]

这是有效的,因为 ($ x)section相当于\f -> f $ x相当于\f -> f x ( map 中的功能)

或者,您可以导入 Control.Applicative并使用 <*>和列表 Applicative实例:

Prelude Control.Applicative> let fs = [(+1), (+2)]
Prelude Control.Applicative> map (\f -> f 2) fs
[3,4]
Prelude Control.Applicative> fs <*> [2]
[3,4]

关于haskell - 如何将函数列表中的每个函数应用于 Haskell 一行中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702455/

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