pp4d with Concurrent Clean

[id:lethevert:20050915:p4]
こんな感じにかけるようになってきました。
"::"で始まるところは、クラスを指定していて、"*","+","#","-"またはシンボルで始まる行は関数(メソッド)です。
また、">"で始まる行は、パラメータ指定です。
関数内関数や局所変数はwhereの後に書かれています。

::TForm1 <
*JoinString -> string
	> lst array of string
	> sep ^string
	
	Result := ''
	for i := 0 to Length(lst) -1
		Result := Result + (makeSubString)
	Result := Copy(Result, 1, Length(Result) - Length(sep))
where
	var
		i: Integer
	makeSubString -> string
		Result := lst[i] + sep

::TForm2 <<
JoinString2 -> string
	> lst array of Integer
	> sep char

virtual, overrideをクラス名の後ろに書くようにしたのだけれど、これはどこに置くのが一番いいのかな。
あ、初めての方には分からないかもしれませんから説明すると、上のコードが、Delphiのコードに変換するプリプロセッサを作っているのです。