仕事のために、標準的な医療フォーミュラー (薬の副作用を報告するために使用される) の形式を最も簡潔に説明したいと思います。(大まかに言えば、後でしゃっくりを介してレンダリングするだけでなく、しゃっくり構造として直接記述しないのはそのためです)
たとえば、説明の一部は次のようになります。
{"reportertitle" [:one-of "Dr" "Pr" "Mrs" "Mr"] ; the reporter is usually the physician
"reportergivenname" :text
"reporterfamilyname" :text
"reporterorganization" :text
"reporterdepartment" :text
....
"literaturereference" :text
"studyname" :text
....}
キーは標準的な名前で、変更することはできませんが、物事を簡単に因数分解できるようにしたいと考えています。たとえば、接頭辞「レポーター」はマップ全体で頻繁に使用されています。することによって:
{ (prefix "reporter"
"title" [:one-of "Dr" "Pr" "Mrs" "Mr"]
"givenname" :text
"familyname" :text
"organization" :text
"department" :text)
.....
"literaturereference" :text
"studyname" :text
....}
しかし、関数であろうとマクロであろうと、外側のマップ内で「プレフィックス」の結果を「統合」(スプライス、正しい用語だと思います) できないと思うので、これは機能しません。
高レベルの宣言性/簡潔性を維持しながらこれを達成するための解決策はありますか? (フォーム全体が巨大で、非開発者が読む可能性があります)
(私はClojureを初めて使用するので、ほとんどすべての設計提案を歓迎します;))
ありがとう!