2023-01-01から1年間の記事一覧
F# のパーサーコンビネーター FParsec を使って、左再帰の文法を書くとどうなるか試してみた。左再帰についての説明は Wikipedia から引用しておく。 左再帰(英: Left recursion)とは、言語(普通、形式言語について言うが、自然言語に対しても考えられ得…
まずひらがな。 Regex.IsMatch("あ", "\p{IsHiragana}") // => true F# では .Net の Regex クラスによって正規表現を扱う。Unicodeのコードポイントの範囲ごとに IsHiragana のような名前が付けられており、その名前を \p{IsHiragana} のように指定すること…
Vim で置換や検索をした際に、パターンが見つからなかった場合は E486: Pattern not found エラーが返る。たとえばマクロはエラーが発生するとそこで停止してしまうので、エラーが返らないようにしたくなるケースもある。ということで今回はその方法について…
前に書いたこの記事に関連して。 F#で要素数が1つのリストをマッチさせる 今度は要素数が2つ以上のリストにマッチさせる方法について。こちらも前回同様 Cons パターン :: を使って次のように書ける。 match some_list with | _::_::_ -> printfn "two or mo…
Vim で置換する際に、正規表現でマッチした文字列をそのまま置換先でも使いたいという場面にちょくちょく遭遇するのでやり方を調べた。後方参照と呼ぶらしい。 (後方参照というワードを知らなかったので調べるのにちょっと苦労した) やり方 (ヘルプ) はこち…
F# で書かれているとあるコードを読んでいて、以下のようなコードが出てきてよくわからなかったので調べた。 a::[] の部分。 match some_list with | a::[] -> printfn "%A" a | b -> printfn "%A" b まず :: は Cons パターンというもので、パターンマッチ…