「アップル、新しいプログラミング言語「Pkl」をオープンソースで公開。コンフィグレーション生成用 | テクノエッジ TechnoEdge」
「Pkl」
JSON、YAML、plistなどの設定ファイル生成に特化した言語で、Python、JavaScript、Swiftのような汎用プログラミング言語ではありません。きっと設定ファイルが複雑化して困ったのでしょう。
せっかくなので、緯度経度精度の文字列エンコーディング、Geo3x3に対応しました「Geo3x3 in Pkl」。
デバッグがしづらいのが難点でしたが、関数型のエンコード、デコードをベースに比較的シンプル、素直な実装でできました。
$ pkl eval simple_geo3x3.pkl enc = "E9139659937288" dec { lat = 35.6586337900162 lng = 139.74546563023935 level = 14 unit = 1.1290058538953522E-4 }
こちらが標準、pcf(pkl format?)
$ pkl eval simple_geo3x3.pkl -f json { "enc": "E9139659937288", "dec": { "lat": 35.6586337900162, "lng": 139.74546563023935, "level": 14, "unit": 1.1290058538953522E-4 } }
JSON
$ pkl eval simple_geo3x3.pkl -f yaml enc: E9139659937288 dec: lat: 35.6586337900162 lng: 139.74546563023935 level: 14 unit: 1.1290058538953522E-4
YAML
$ pkl eval simple_geo3x3.pkl -f xml <?xml version="1.0" encoding="UTF-8"?> <root> <enc>E9139659937288</enc> <dec> <lat>35.6586337900162</lat> <lng>139.74546563023935</lng> <level>14</level> <unit>1.1290058538953522E-4</unit> </dec> </root>
XML。(Listを出力した場合、文字列としてすべて繋がってしまっているのはバグかも?)
$ pkl eval simple_geo3x3.pkl -f plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>enc</key> <string>E9139659937288</string> <key>dec</key> <dict> <key>lat</key> <real>35.6586337900162</real> <key>lng</key> <real>139.74546563023935</real> <key>level</key> <integer>14</integer> <key>unit</key> <real>1.1290058538953522E-4</real> </dict> </dict> </plist>
Macの開発環境、Xcodeでおなじみplist(XML)
下記がGeo3x3のPkl(ピクル)実装。
新しい言語を使って実装してみるのは楽しいですね!
テストデータを生成するのに使える気がしますが、使い慣れてるJavaScriptで書いちゃうかなぁ。