Haskell到Javascript Lamba函数的翻译

时间:2019-02-10 20:57:34

标签: javascript haskell

我在haskell中具有以下lambda函数:

public function me(Request $request) { $user = JWTAuth::user(); if (count((array)$user) > 0) { return response()->json(['status' => 'success', 'user' => $user]); } else { return response()->json(['status' => 'fail'], 401); } }

我想知道JavaScript中的等效版本是什么(出于学习目的),目前我写了以下版本,如果正确,我想知道。

cup size = \message -> message size

2 个答案:

答案 0 :(得分:8)

您的JavaScript代码与

相对应
cup = \size -> (\message -> message) size

在Haskell中。由于\message -> message是身份函数,因此与

相同
cup = \size -> size

又是身份功能:

cup = id

正确的翻译是

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

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

答案 1 :(得分:3)

您的haskell lambda接受一个参数,然后返回一个lambda,该lambda依次接受一个函数作为参数,并将该函数与指定给cup的参数一起应用。

在javascript中,等效项是这样:

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

您可以不用括号将其重写:

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