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

如何给lambda中的运算符添加空间?

如何解决《如何给lambda中的运算符添加空间?》经验,为你挑选了1个好方法。

例如,这不是类型检查

\cons nil -> 5 `cons` 3 `cons` nil

这也不是

\(#) -> 5 # 3 # nil

虽然这两者都有

\cons nil -> 5 `cons` nil
\(#) nil -> 5 # nil

有没有办法在lambdas中为运算符分配infixites.我试过了

infixr 5 #
foo = \(#) nil -> 5 # 3 # nil

这给出了没有定义#和的错误

foo = \(infixr 5 #) nil -> 5 # 3 # nil

这只是一个语法错误.

我能做什么?



1> Reid Barton..:

固定声明可以是本地的,但必须伴随定义,所以你必须写一些类似的东西

foo cons nil = 'a' # 'b' # nil
  where (#) = cons
        infixr 5 #

要么

foo = \cons nil -> let (#) = cons; infixr 5 # in 'a' # 'b' # nil

等等


确实很好!这是Haskell98,Haskell2010或GHC的一部分吗?
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有