【问题标题】:Is tacit programming possible in Purescript?Purescript 中是否可以进行隐性编程?
【发布时间】:2018-06-17 16:27:54
【问题描述】:

默认编程是否也称为无点样式,请参见例如http://en.wikipedia.org/wiki/Tacit_programming Purescript 中的一个选项?

【问题讨论】:

    标签: functional-programming purescript


    【解决方案1】:

    看看 PureScript Prelude source,我会这么说:

    instance functorFn :: Functor ((->) r) where
      map = compose  -- point-free!
    

    你在http://try.purescript.org/?session=3538ae1c-eece-8f50-ad0c-e1504846a793中的例子:

    foldr f z Nil = z
    foldr f z (x:xs) = f x (subfold xs)
      where subfold = foldr f z
    
    sum = foldr (+) 0
    
    main = trace $ show $ sum (1:2:3:4:Nil)  -- prints: 10
    

    (需要自己定义foldr,因为我无法导入任何模块)

    【讨论】:

    • 那么您将如何翻译例如 Wikipedia Haskell 示例:“sum = foldr (+) 0”?
    • @user22207:查看我的编辑,语法与 Haskell 中的完全相同。
    • 以无点风格编写递归函数似乎与在 Haskell 中的工作方式不同,因为在 Haskell 中你会为此使用 Y 组合器 (fix f = let x = f x in x),这需要惰性求值.
    猜你喜欢
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多