Haskell到Javascript Lambda函数的转换

cedebl8k  于 2023-01-07  发布在  Java
关注(0)|答案(2)|浏览(134)

我在haskell中有以下lambda函数:
cup size = \message -> message size
我想知道什么是JavaScript的等效版本(用于学习目的),目前我写了以下版本,我想如果它是正确的。
const cup = size => (message => message)(size)

wn9m85ua

wn9m85ua1#

JavaScript代码对应于

cup = \size -> (\message -> message) size

因为\message -> message是恒等函数,所以这与

cup = \size -> size

也是恒等函数

cup = id

正确的翻译应该是

const cup = size => message => message(size)

function cup(size) { return message => message(size); }
pxyaymoc

pxyaymoc2#

你的haskell lambda接受一个参数并返回一个lambda,lambda反过来接受一个函数作为参数,并将该函数与给定的参数应用于cup。
在javascript中,其等价形式如下:

const cup = size => (message => message(size))

你可以不用括号重写:

const cup = size => message => message(size)

相关问题