F# コンパイラを "拡張" して、コンパイル時のカスタム文字列チェックを行うことはできますか? StringFormat
などを使用するときの文字列のチェックに似たものを考えていますsprintf
。「拡張」と言うとき、コンパイラのカスタムバージョンを構築するという意味ではなく、既存のサポートされている手法を使用するという意味です。
私の頭の上から、あなたはRegexFormat
タイプを持っているかもしれません。正規表現を指定すると、コンパイラは正規表現を使用して静的分析を行います。例えば
//Setup RegexFormat with IP address regex and type abbreviation IpRegexFormat?
//Compile error. ipAddress expects IpRegexFormat!
let ip = ipAddress "192.168.banana.1"
そうでない場合、これは私にとって型プロバイダーかもしれません :) - 全体がひどいアイデアである場合は、お知らせください!