-5

statement -> if bool then statement_list -> while bool statement_list -> id = 式

したがって、入力の場合:((id = id + id)(if bool then (if bool then ( id = id + id ))(id = const / const)(id = id + id))(while bool (id = id - const)(id = id - id)))

ステートメントの数は 9 にする必要があります。

4

1 に答える 1

3

スキームはホモイコニックです。Scheme コードはScheme データであるため、Scheme コード (ステートメントなど) を表すリストとデータを表すリストを区別する方法はありません。ただし、リスト内に含まれるリストの数を数えることは確かに可能です。これは、次の関数で実行できます。

(define (list-count list)
  (cond ((null? list) 0)
        ((list? (car list))
         (+ (list-count (car list)) 
            (list-count (cdr list))
            1))
        (else (list-count (cdr list)))))

あなたの仕様によると、これは9質問のリストが与えられると返されます。

> (list-count '((id = id + id)(if bool then (if bool then ( id = id + id ))(id = const / const)(id = id + id))(while bool (id = id - const)(id = id - id))))
9
于 2012-11-27T23:50:09.733 に答える