Home About Contact
ラムダ(式)を javascript と kotlin script と golang で使う

パーサーコンビネータについて調べていて、 そもそもその元になる概念としてコンビネータがあることを知る(いまさら?!)。 つまり、パーサーコンビネータはいろいろあるコンビネータの中の一つ。 そして、いろいろあるコンビネータの中でもっとも有名なのが Y コンビネータとか Z コンビネータらしい。 そして、コンビネータを構成するパーツの一つがラムダ(式)とか無名関数であると。

名前付き関数はいつも使っていて、そして名前無し関数(無名関数)も結構使う。 では、ラムダ(式) と無名関数ってイコールじゃないの? と思って調べるもよくわからない。

Wikipedia によると: 「プログラミング言語における無名関数(英語: anonymous functionあるいはnameless function)とは,名前付けされずに定義された関数のことである.無名関数を表現するための方法には様々なものがあるが,近年主流となっているのはラムダ式による記法である.」 ということで、ラムダ式(という概念)をプログラム言語で表現するときに使うのが無名関数(または匿名関数)と考えて問題なさそう。

パーサーコンビネータや Yコンビネータを理解するための最初の一歩としてラムダ式を把握する。

» Read More
ExtendScript から https にアクセスする

ExtendScript には Socket があるので、http のように SSL でない ウェブリソースにアクセスすることができる。 しかし、SSL 化された https のウェブリソースにはアクセスする方法がない・・・と思っていたのだが、 なんと macOS では curl を経由すれば簡単にできることが判明した。

Windowsの場合も VBScript を経由することで実現できるようです。 詳しくは restix をご覧ください。

wttr.in with vscode

» Read More
ExtendScript で Underscore.js を使う(その2) webpack 編

ExtendScript で Underscore.js を使う(その1) rollup 編 で rollup + babel + Underscore.js を試したのだが、 rollup を webpack に差し替えての Underscore.js を試したのでその備忘録。

» Read More
ExtendScript で Underscore.js を使う(その1) Rollup.js 編

Node.js で ExtendScript する話(パート3) ES6 Javascript 記述を使いたい で node.js を使ってモジュールを解決しつつ、アロー関数や const let などのES6 Javascript 記述を使って書けるようになった。 そこで、次に Underscore.js を利用した ExtendScript をコーディングすることを考えます。

実のところ単に Underscore.js を使うだけならば、ExtendScript 標準の @include ディレクティブを使うことで普通に利用できます。 しかしこの方法では、 (1)Underscore.js のファイルを常に本体のファイルとともに配布する必要があり面倒、 (2)Underscore.js を使う側のアプリケーションコードで、ES3レベルの Javascript しか記述できない、 という2つの問題があります。 Node.js + Rollup.js + Babel を使う方式でこの問題を解決しましょう。

» Read More
Node.js で ExtendScript する話(パート4) webpack アゲイン

Node.js で モジュールを使って ExtendScript するために

その後、さらに調べてみると、 パート1で不都合があった webpack で、オプションを適切に指定することで、 ExtendScript用のコードにバンドルできることがわかりました。

Node.js ではさまざまなツールの組み合わせが存在していて、自分の目的にあうツールがどれなのか・・・という。 アプリケーションコードを書く前段階での試行錯誤が半端ないですね。

» Read More
Node.js で ExtendScript する話(パート3) ES6 の Javascript 記述を使いたい

実のところ、 パート1パート2は、この ES6 の Javascript 記述で ExtendScript 用のコードを書くための前準備であった。

ここまでで、モジュールを使ってコードを書けるようになり、Rollup.js により、それらのコードを一つのファイルにまとめるところまでできた。 あとは、このコードをいわゆるトランスパイラと呼ばれるコード変換ツールにより、ExtendScript として機能する Javascript に変換します。 このトランスパイラは定番の babel を使います。

» Read More
Node.js で ExtendScript する話(パート2)

パート1では、webpack を使って、モジュールを一つのファイルにまとめていました。 しかし、この方法では、webpack により、ExtendScript で実行できないjavascript記述が追加されてしまう不都合がありました。 そこで モジュールをひとつにまとめる機能を webpack の代わりに Rollup.js を使って解決することにします。

» Read More
Node.js で ExtendScript する話(パート1)

Web関係のJavascript 開発では、Node.js を使って モジュールに分割して開発をしていく。 これを InDesign 用の ExtendScript でもできるようにしたい。 もちろん、ExtendScript にも @include 記述により、モジュールを使うことはできる。 しかし、その場合できあがったコードを配布するときに、依存しているモジュールファイルも一緒に渡す必要が生じる。 これを避けたい。配布時には単にひとつのファイルだけで完結したい。

» Read More
Go, listFiles 指定のディレクトリ内のファイルまたはディレクトリを列挙する(改良版)

Go で listFiles する方法 の改良版。

» Read More
Thinkpad X1 Nano 使用開始から 2ヶ月経過 / 今オーダーすると納期が来年?!

Thinkpad X1 nano

この夏、Lenovo で BTO のマシンをオーダーしたら納期が来年の予定になった、という記事がありました。 Reddit の r/thinkpad でも 納期が 2022年4月になっているという投稿があったので、半導体不足のせい? 自分の場合は、Thinkpad を 6月1日にオーダーして、当初は一ヶ月程度で納品という表示だったのですが、 途中で、納期が延びて 9月になっていた時期もありました。 しかし、その後また何度か納期表示変更があり、結局7月上旬に到着、 おおむね当初の納期見積りの通りでした。

» Read More
Golang, 名前付きタイプにメソッドを生やす

Golang では named type に対して method を生やすことができる。 これが Java などでクラスがあると便利だった機能の代替として使える。

» Read More
Golang, アイテムを日付でソートしたい

Golang でのソート処理をメモ。

» Read More