子串函数中的方案错误

时间:2015-04-11 03:30:00

标签: string scheme substring

我是Scheme的新手,我正在尝试实现一个简单的函数来检查字符串的结构。特别是,我正在检查字符串是否为ss格式  这是功课所以请不要给出完整的答案..我的代码中只有一个我无法解决的错误。

我得到了

错误:1不是函数[(anon),/,/,(anon),display,s,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB ,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB,CB,/,CB,/,CB,/,CB,/,CB,/ ,CB,/,/,CB, - ,CB, - ,CB, - ,CB, - ,CB,string-length,CB, - ,CB, - ,CB, - ,CB, - ,CB, - ,CB , - ,CB, - ,=,CB, - ,CB, - ,CB, - ,CB, - ,CB, - ,CB, - ,CB, - ,CB, - ,CB,=,CB,=,CB , - ]

这是我的代码:

  (define CB
     (lambda (s)
        (display "String: ")(display s) 
        (define S_length (string-length s))
        (display " length: ")(display S_length)
            if (not(= S_length 0))

            if (even? S_length)
                (define leftString  (substring s 0 [(- (/ S_length 2) 1)]))
                (define rightString (substring s (- (/ S_length 2) 1) [(- S_length 1 )]))
                (string=? leftString rightString)

                )
                )

1 个答案:

答案 0 :(得分:2)

部分:

[(- (/ S_length 2) 1)]

[(- S_length 1 )]

不应该有额外的括号[]。这导致错误,因为表达式减少到(1),试图将1应用于无参数。