プロローグを使用して、音楽のコンテキスト用の単純な DCG を開発しようとしています。
私は次のように音符を定義しました。
note(ton) --> [a];[d];[f].
note(sup) --> [b];[e];[g].
etc.
上記の 'ton' および 'sup' 引数は、音符が属するコードに関連しています。ノート a、d、および f は * ton * ic コードに属し、ノート b、e、および g は * sup *ertonic コードに属します (ニ長調の調)。
ここで、2 つの引数 (1 つは和音用、もう 1 つは音符の長さ) を取る「音符」記号をさらに導入したいと思います。例えば、
note(X,q) --> note(X),[2].
私の問題は、note(X),[2] がリスト [a,2] であるという事実にあります。[a2] の形式で必要です。
変数 X を使用しないことで、この問題を回避することができます。
note(ton) --> [a];[d];[f].
note(ton,q) --> [a2];[d2];[f2].
しかし、私の表現には 7 つの異なるコードと 7 つの異なる音符の長さがあるため、これには多くの不要な (私が思うに) コードが含まれます。
note(X) と整数 2 を連結する方法がわかりません。また、これをどこで行うべきかもわかりません。書き換え規則の右側にあるものを連結することは可能ですか?
ありがとう、
ショーン