【问题标题】:Scheme converting a list to a String within a function在函数中将列表转换为字符串的方案
【发布时间】:2013-10-28 14:25:23
【问题描述】:

当我递归调用它时,我不确定如何在函数中将列表转换为字符串。比如我的代码如下:

(define (pre-order T)
 (define (conv x)
    (cond ((number? x) (number->string x))
    ((char? x) (string x))))

(map-diff (lambda (x) (conv x)) T)

   (cond ((null? T) "")
    ((eq? (value T) #\+)
           (cons "+" (pre-order (right T))(pre-order (left T))))
     ((eq? (value T) #\*)
           (cons "*" (pre-order (right T))(pre-order (left T))))
     ((eq? (value T) #\-)
           (cons "-" (pre-order (left T))))
     ((eq? (value T) #\/)
           (cons "/" (pre-order (left T))))
     (else (cons (value T) (pre-order (left T))))))

假设我的地图功能可以正常工作。我正在使用树,并且还想知道如何用前缀表示法编写算术分析树。我对算术解析树做了研究,我写了一个可以计算它们的值的函数,但是我不知道如何正确地遍历它们来解决这个问题。

【问题讨论】:

  • 在这里回答我关于字符串的问题,我正在写一篇关于前序遍历的新帖子。

标签: string recursion scheme binary-tree binary-search-tree


【解决方案1】:

字符串是一个字符序列。字符列表可以很容易地转换为字符串。

(define charlst '(#\H #\e #\l #\l #\o))
(list->string charlst); ==> "Hello"

如果你有一个字符串列表,你可以string-append他们:

(define stringlst '("A" "B" "C"))
(apply string-append stringlst) ; ==> "ABC"

由于您似乎正在处理字符,因此仅在列表中使用它们会更容易,list->string 结果与 string-append 相比是一项轻松的任务,string-append 类似于附加列表。

【讨论】:

    猜你喜欢
    • 2012-05-15
    • 2017-09-17
    • 2015-06-28
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多