【问题标题】:Functional Programming: Elegant way to read a stream of integers and return the list of those integers函数式编程:读取整数流并返回这些整数列表的优雅方式
【发布时间】:2020-01-30 13:04:47
【问题描述】:

这就是我在 Racket 中的实现方式。

(define (readInt)
  (define (readIntTail acc)
    (let ([i (read)])
      (if (integer? i) (readIntTail (cons i acc)) (reverse acc) )))
  (readIntTail null))

虽然这可行,但我想知道是否有更优雅的方式来做同样的事情。也许不使用反向功能。

【问题讨论】:

  • (sequence->list (in-producer read (negate integer?)))

标签: functional-programming scheme racket


【解决方案1】:

您可以在不使用累加器的情况下cons 整数,除非您需要使用尾递归:

(define (readInt)
  (let ((x (read)))
    (if (integer? x)
        (cons x (readInt))
        null)))

【讨论】:

  • 不,尾递归不是必需的。您的解决方案是一个更清洁的实现。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 2021-03-15
  • 2019-01-27
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2020-09-04
相关资源
最近更新 更多