Javascript ramda.js中带有模板字符串的无点样式

Javascript ramda.js中带有模板字符串的无点样式,javascript,functional-programming,ramda.js,pointfree,Javascript,Functional Programming,Ramda.js,Pointfree,我在ramda.js中编写一个无点风格的函数时遇到了问题,我想知道是否有人能帮我解决这个问题。getEnv函数读取一个env变量,如果找不到,则记录到控制台 这是我的密码 const env = name => R.path(['env', name], process); const getEnv = name => R.pipe( env, R.when(R.isNil, () => log(`Missing env "${name}"`)) )(name);

我在ramda.js中编写一个无点风格的函数时遇到了问题,我想知道是否有人能帮我解决这个问题。
getEnv
函数读取一个env变量,如果找不到,则记录到控制台

这是我的密码

const env = name => R.path(['env', name], process);

const getEnv = name => R.pipe(
  env,
  R.when(R.isNil, () => log(`Missing env "${name}"`))
)(name);

console.log(getEnv('myenv'))

我想删除
getEnv
函数的
name
参数(如果可能,也可以在
env
函数上删除),但不知道如何执行此操作。

函数
getEnv
的功能超出了它应该做的。它实际返回路径的内容或记录验证消息

将其拆分为两个单独的函数。在下面的示例中,我将其称为
findPath
validatePath
,它通常适用于所有路径。我将
validatePath
包装到另一个名为
validateEnvPath
的函数中,该函数直接搜索“env”

要摆脱
env
您可以执行以下操作:
R.flip(R.curry(R.path))
。这将改变函数curry,然后改变参数,这样您就可以告诉函数首先要查询的位置
const进程={env:{myenv:':':')}
常量路径=R.flip(R.curry(R.path))
const findPathInProcess=R.pipe(
路径(过程),
R.ifElse(
R.isNil,
R.始终(未定义),
R.身份
)
)
const validatePath=路径=>
validationPathResponse(findPathInProcess(path))(`在[${path}]下找不到内容)`)
const validateEnvPath=path=>
validatePath(构建路径(['env'])(路径))
const buildPath=xs=>x=>
xs.concat(x)
const validationPathResponse=response=>errorMessage=>
响应
? 响应
:错误消息
log(validatePath(['env','myenv']))
log(validateEnvPath('myenv'))
log(validateEnvPath('yourenv'))

函数
getEnv
做的比它应该做的更多。它实际返回路径的内容或记录验证消息

将其拆分为两个单独的函数。在下面的示例中,我将其称为
findPath
validatePath
,它通常适用于所有路径。我将
validatePath
包装到另一个名为
validateEnvPath
的函数中,该函数直接搜索“env”

要摆脱
env
您可以执行以下操作:
R.flip(R.curry(R.path))
。这将改变函数curry,然后改变参数,这样您就可以告诉函数首先要查询的位置
const进程={env:{myenv:':':')}
常量路径=R.flip(R.curry(R.path))
const findPathInProcess=R.pipe(
路径(过程),
R.ifElse(
R.isNil,
R.始终(未定义),
R.身份
)
)
const validatePath=路径=>
validationPathResponse(findPathInProcess(path))(`在[${path}]下找不到内容)`)
const validateEnvPath=path=>
validatePath(构建路径(['env'])(路径))
const buildPath=xs=>x=>
xs.concat(x)
const validationPathResponse=response=>errorMessage=>
响应
? 响应
:错误消息
log(validatePath(['env','myenv']))
log(validateEnvPath('myenv'))
log(validateEnvPath('yourenv'))

此外,还可以编写以下内容

const path = R.flip(R.path) // already curried

const findPathInProcess = R.pipe(
  path(process),
  R.when(
    R.isNil,
    R.always(undefined)
  )
)

此外,还可以写以下内容

const path = R.flip(R.path) // already curried

const findPathInProcess = R.pipe(
  path(process),
  R.when(
    R.isNil,
    R.always(undefined)
  )
)

考虑使用
monad。它是否已经实现并与兄弟ramda配合良好:


考虑使用
monad。它是否已经实现并与兄弟ramda配合良好:


你能详细说明你的问题吗?你在期待什么,到底发生了什么?如果您遇到异常/错误,请发布发生该异常/错误的行以及异常/错误详细信息。请输入这些详细信息,否则我们可能无法提供帮助。谢谢@FrankerZ。最近更新了我的问题。你能详细说明你的问题吗?你在期待什么,到底发生了什么?如果您遇到异常/错误,请发布发生该异常/错误的行以及异常/错误详细信息。请输入这些详细信息,否则我们可能无法提供帮助。谢谢@FrankerZ。最近更新了我的问题。比我预期的多!非常感谢:)比我想象的要多!非常感谢:)