3
をカウントするために、相互再帰的なツリーを横断:私は木を横断しSec
の出現回数をカウントする機能を作成しようとしてるF#が次のタイプを考える要素
type Title = string
type Document = Title * Element list
and Element = Par of string | Sec of Document
。 4
Sections
が、この場合があるので、noOfSecs d
、この場合の戻り4
の場合と、Sections
の数をカウントするDocument
を取っ
let s1 = ("section 1", [Par "Bla"])
let s2 = ("section 2", [Sec s21; Par "Bla"])
let s21 = ("subsection 2.1", [Par "Bla"])
let s3 = ("section 3", [Par "Bla"])
let doc = ("Compiler project", [Par "Bla"; Sec s1; Sec s2; Sec s3]);
機能:
は、次の例を考えます。私はPar
を打つときに実行するために特に何、私が何かをしようとしましたが、私は少しこだわっている:
let rec noOfSecs d =
match d with
| (_,[]) -> 0
| (_,e::es) -> (findSecs e)
and findSecs = function
| Sec(t,_::es) -> 1 + noOfSecs (t,es)
| Par p -> //What should we do here?