当前位置:  开发笔记 > 编程语言 > 正文

朱莉娅有一个类似于哈斯克尔的美元符号的算子吗?

如何解决《朱莉娅有一个类似于哈斯克尔的美元符号的算子吗?》经验,为你挑选了2个好方法。

Haskell的美元符号是一个很棒的函数,f $ g例如,f用其结果g作为参数进行评估.这可以像这样出色地工作

sin $ sqrt $ abs $ f 2

这相当于

sin(sqrt(abs(f(2))))

美元符号对我很好,因为它更具可读性.我注意到Julia有|>哪些管道.这似乎f |> g意味着g将评估结果f作为参数.从我注意到的,似乎我可以像这样编写上述表达式

2 |> f |> abs |> sqrt |> sin

但我想知道是否有一些运算符,我可以做我在Haskell中所做的事情.



1> Fengyang Wan..:

可以$在模块中本地定义运算符(只要您不需要xor的弃用含义);

f $ y = f(y)

但是,此运算符的关联性(它是左关联的)是不正确的,并且其优先级太高而不能用于避免括号.幸运的是,有很多权利优先的权利关联运算符.人们可以定义

f ? x = f(x)

(单行定义,几乎是Haskell-esque!)然后使用它:

julia> sin ? ?
1.2246467991473532e-16

julia> exp ? sin ? ?
1.0000000000000002

julia> exp ? sin ? ?
1.0000000000000002



2> Matt B...:

现在在不稳定的夜间版本上有一个函数组合运算符(很快将在0.6).它可以在Compat.jl包的早期版本中使用.

help?> ?
"?" can be typed by \circ

  f ? g

  Compose functions: i.e. (f ? g)(args...) means f(g(args...)). The ? symbol can be
  entered in the Julia REPL (and most editors, appropriately configured) by typing
  \circ. Example:

  julia> map(uppercase?hex, 250:255)
  6-element Array{String,1}:
   "FA"
   "FB"
   "FC"
   "FD"
   "FE"
   "FF"

或者,以您的示例 - 请注意您需要括号:

julia> (sin ? sqrt ? abs ? f)(2)
0.9877659459927356

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有