tag:blogger.com,1999:blog-18155931242117584842024-03-13T10:44:23.762+09:00僕のIT革命Unknownnoreply@blogger.comBlogger114125tag:blogger.com,1999:blog-1815593124211758484.post-69170874052008884762022-03-26T00:34:00.003+09:002022-03-26T00:34:55.191+09:00救急外来にかかったときの記録子どもの頃にかかった記憶はあるが自分で行ったことはなかったのでメモしておく。
先日怪我をした。より具体的に云うとランニング中に転倒し顎を地面に叩きつけた。深夜の12時ごろの話である。
その時点ては両手の擦傷が痛いとか下顎の間接が痛いとか奥歯のセラミックが割れなくて幸いだったといった程度だが、マスクを外して見るとなにやら下部に血がついている。 顎にも擦傷があるのかとうんざりしながら歩いて帰り、血の滲んだマスクを捨てて傷口を洗おうとしたところで皮膚が割けて肉が見えているのに気付いた。
一瞬顔が青くなったが単身なので倒れるわけにはいかない。幸い血は固まっていてそれほど出血していないし、先程まで運動していたからかあまり痛みもない。
この時点で明白な選択肢は3つあった。即ち:
救急車を呼ぶ
自力で病院へ行き救急外来を受診する
応急処置して朝になったら近場の医院を受診する
である。まず 3 はUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-43385482577293223302021-07-03T01:04:00.004+09:002021-07-03T01:04:13.440+09:00macOS で GUI 版 Emacs を使う設定macOS であっても端末エミュレータ上で CLI 版 Emacs を使っているプログラマは多いと思うが、端末側に修飾キーを取られたり東アジア文字の文字幅判定が狂ってウィンドウ描画が崩れたりなどしてあまり良いことがない。 それなら GUI 版の Emacs.app を使った方がマウスも使える上に treemacs などはアイコンも表示されてリッチな UI になる。
しかし何事も完璧とはいかないもので、CLI だと問題なかったものが GUI だと面倒になることがある。その最大の原因はシェルの子プロセスではないという点である。つまり macOS の GUI アプリケーションは launchd が起動しその環境変数やワーキングディレクトリを引き継ぐので、ファイルを開こうとしたらホームディレクトリ (~/) でなくルートディレクトリ (/) を見に行くし、ホームディレクトリなり /opt/Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-91100408561448880542021-04-28T02:38:00.005+09:002021-04-28T02:47:09.187+09:00Perl のサブルーチンシグネチャ早見表Perl のサブルーチン引数といえば実引数への参照を保持する特殊配列 @_ を手続き的に分解するのが長らくの伝統だった。これはシェルの特殊変数 $@ に由来する意味論で、おそらく JavaScript の arguments 変数にも影響を与えている。
すべての Perl サブルーチンはプロトタイプ宣言がない限りリスト演算子なので、この流儀は一種合理的でもあるのだが、実用的にそれで良いかというとまったくそうではないという問題があった; 結局大多数のサブルーチンは定数個の引数を取るので、それを参照する形式的パラメータが宣言できる方が都合が良いのである。
そういうわけで実験的に導入されたサブルーチンシグネチャ機能により形式的パラメータが宣言できるようになったのは Perl 5.20 からである。その後 Perl 5.28 において出現位置がサブルーチン属性の後に移動したことを除けば PerlUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-24636101202995194892021-03-30T21:44:00.003+09:002021-03-30T21:47:34.650+09:00Perl 7 より先に Perl 5.34 が出るぞという話Perl 5 の次期バージョンとして一部後方互換でない変更 (主に間接オブジェクト記法の削除とベストプラクティスのデフォルトでの有効化) を含んだメジャーバージョンアップである Perl 7 がアナウンスされたのは昨年の 6 月 のことだったが、その前に Perl 5 の次期周期リリースである Perl 5.34 が 5 月にリリース予定である。
現在開発版は Perl 5.33.8 がリリースされておりユーザから見える変更は凍結、4 月下旬の 5.33.9 で全コードが凍結され 5 月下旬に 5.34.0 としてリリース予定とのこと。
そういうわけで事前に新機能の予習をしておく。
8進数数値リテラルの新構文
見た瞬間「マジかよ」と口に出た。これまで Perl はプレフィクス 0 がついた数値リテラルを8進数と見做してきたが、プレフィクスに 0o (zero, small o) も使えるUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-1815593124211758484.post-961441965335349302021-03-27T15:29:00.008+09:002021-03-27T16:51:42.630+09:00多分週刊チラシの裏 (Mar 23, 2021 - Mar 27, 2021)Intel プロセッサのマイクロコードを変更する非公開命令が発見される
今日のプロセッサは複雑な命令を単純な回路で実装したりバグの修正を容易にするため、1 個の命令でも実際にはプロセッサ内部に格納されたマイクロプログラムを実行するようになっていることが多い。 かつて浮動小数点演算器のバグで Pentium をリコールする羽目になった Intel も例外ではないのだが、Intel が電子署名したマイクロコードでなくとも適用できる非公開命令が発見されたという報告。
ただし無条件ではなく、命令自体はユーザモードでもデコードされるがプロセッサが特定の “Unlocked State” にないときは未定義命令として処理されるらしい。
MSKK の週休三日トライアルで生産性が四割向上
2019 年の記事。週休三日制を導入する事業所は中小を中心に増加しているが、Microsoft の日本法人であるUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-80649250695705024082021-03-22T00:40:00.002+09:002021-03-22T00:40:28.743+09:00多分週刊チラシの裏 (Feb 28, 2021 - Mar 22, 2021)JavaScript 開発者が如何にして TypeScript 嫌いから TypeScript ファンになったか
気軽な読み物。型宣言の冗長さとジェネリクスなどの複雑性を嫌って (選択肢にあれば) JavaScript の方を選んできた筆者が TypeScript しか選べない職場に移って数ヶ月後にはすっかりファンになっていたという話。
理由は月並で「『不可能な状態を不可能にする』Union Type と網羅性チェック」「コンパイル時型検査によるエラーの早期検出」「リッチな IDE 支援」の 3 本。理由がそれだけなら個人的には Flow か Elm を進めたいところではある。
NASA の最新火星ローバーが搭載するプロセッサは 1998 年の iMac と同じ
NASA が Mars 2020 ミッションのために送り出し、先月火星表面に着陸した最新かつ過去最大のローバーである Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-43621255198579959042021-03-10T00:24:00.001+09:002021-03-10T15:30:40.095+09:00Mac から iPhone のカメラを起動して写真を直接取り込めるVia: The Verge
ID セルフィーや (物理) 書籍のページスキャンなど携帯電話のカメラを使って写真を取り込むことは日常的な所作になっているが、写真の使い途が何かの申し込み用 Web フォームなどで iPhone より Mac の方が操作し易いときなどは億劫だ。Mac 組込の FaceTime カメラは 720p とか 1080p しかなくて非力すぎ、かといって iPhone で一旦撮影したものを Photos から探して AirDrop するのも面倒である。
実は macOS Mojave / iOS 12 以降には Continuity Camera という機能がある。これを使うと Apple 製の Mac アプリケーションから iPhone / iPad のカメラを起動して、余計な中間コピーを残すことなく写真を Mac に転送できる。
使い方は簡単で、対応している Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-33328984203512831262021-03-05T23:22:00.001+09:002021-07-01T19:20:20.664+09:00開発環境の構築に asdf が便利なので anyenv から移行したプロジェクト毎に異なるバージョンの言語処理系やツールを管理するために、pyenv や nodenv など *env の利用はほとんど必須となっている。 これらはほとんど一貫したコマンド体系を提供しており、同じ要領で様々な環境構築ができる非常に便利なソフトウェアだが、それを使うことで別の問題が出てくる: *env 自身の管理である。 無数の *env をインストールし、シェルを設定し、場合によりプラグインを導入し、アップデートに追従するのは非常に面倒な作業だ。
幸いなことにこれをワンストップで解決してくれるソリューションとして anyenv がある。これは各種 *env のパッケージマネージャというべきもので、一度 anyenv をインストールすれば複数の *env を簡単にインストールして利用できる。さらに anyenv-update プラグインを導入すればアップデートまでコマンド一発でUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-58933864695274574832021-02-26T15:17:00.001+09:002021-03-05T11:47:26.755+09:00多分週刊チラシの裏 (Oct 19, 2020 - Feb 26, 2021)週刊とは言ったが毎週刊とは言ってないという言い訳。
C++ のコンパイルを高速化する小技
ビルドシステムやツールを変更せずともコーディングだけで改善できるコンパイル時間短縮テクニック。
#include を減らす
インライン化を明示的に避ける
関数オーバーロードの可視性を制限する
公開シンボルを減らす
の 4 本。
歯医者で歯を治したら記憶能力を失った話
歯医者で簡単な治療を受けた日から後、記憶が 90 分しか保持できなくなった英国の軍人の話。まるで「博士の愛した数式」だが実話である。
DRPK で売られていた Sim City っぽいゲームのリバースエンジニアリング
平壌市内のアプリストア (物理) で売られていた Sim City 風ゲームがインストールに失敗してライセンス認証で止まってしまったのでなんとか動かせないものかとリバースエンジニアリングしてみた話。
日本にあっては Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-65502916407645810712021-02-25T00:29:00.001+09:002021-02-25T00:33:19.671+09:00C の時間操作関数は tm 構造体の BSD 拡張を無視するという話久しぶりに C++ (as better C) で真面目なプログラムを書いていて引っかかったので備忘録。 「拡張なんだから標準関数の挙動に影響するわけねえだろ」という常識人は読む必要はない。
要旨
time_t の表現は環境依存
サポートしている時刻は UTC とプロセスグローバルなシステム時刻 (local time) のみで、任意のタイムゾーン間の時刻変換を行う標準的な方法はない
BSD / GNU libc は tm 構造体にタイムゾーン情報を含むが、tm -> time_t の変換 (timegm / mktime) においてその情報は無視される
事前知識
C 標準ライブラリにおいて時刻の操作に関係するものは time.h (C++ では ctime) ヘッダに定義されている。ここで時刻を表現するデータ型は2つある: time_t と tm である。time_t がUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-87552430647006378992020-10-27T20:00:00.001+09:002020-10-27T20:00:07.809+09:00多分週刊チラシの裏 (Oct 12 - 18, 2020)プログラミング言語のエネルギィ効率性
おなじみ Computer Language Benchmark Game にある言語のうちプロプライエタリな Smalltalk を除く 27 言語の、時間効率性と空間効率性に加えて「エネルギィ効率性」を検証したという研究。
結果は大方の予想を外れない (コンパイラ言語 - VM 言語 - インタプリタ言語の序列) のだが、言語毎によって単位時間あたりのエネルギィ効率 (換言すると CPU 最適化性能) が異なるので「速ければより省エネ」とは必ずしも言えないことや、最大メモリ消費量は言語のパラダイムによって大方が決まり、エネルギィ効率とはほとんど相関がない (ので Java でもエネルギィ効率は高い) ことなど面白い事実が見られる。
『アメリカのインターネット』の終焉
1994 年に Netscape が設立されたとき、世界にはおよそ一億台の Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-4965100410997322272020-10-19T15:54:00.003+09:002020-10-19T15:54:40.604+09:00多分週刊チラシの裏 (Oct 04 - 11, 2020)Hacktoberfest が低品質 Pull Request 祭に
DigitalOcean が例年開催している Hacktoberfest は GitHub 上にある公開レポジトリへの PR 4 個毎に特典 T シャツを 1 枚進呈するという OSS 活動参加促進キャンペーンだが、今年は事情が違ったらしい。
大量のスパマーがこれまた大量の低品質 PR を其処此処のプロジェクトに送りつけたために大混乱が生じたとのこと。 問題は GitHub 上の全公開リポジトリが対象である点で、あらゆるプロジェクトがスパムの標的になる可能性がありながら各リポジトリメンテナの取れる手段がオプトイン / オプトアウトの別を問わず存在しなかったことである。
GitHub は当座の対策として非コントリビュータからの PR 作成を一時的に制限する機能を実装した。
DigitalOcean は混乱について謝罪し、Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-69984312766526227342020-10-12T06:34:00.007+09:002020-10-12T19:20:31.538+09:00多分週刊チラシの裏 (Sep 28 - Oct 04, 2020)Chrome Web Store が有料 Chrome 拡張の取扱を終了
Chrome Web Store で提供されている有料 Chrome 拡張及びアプリ内課金 API の両方が 2021 年 1 月いっぱいで廃止される。 開発者はそれまでに代替となるサードパーティの課金 API に移行し、購入済ライセンスの移行手段も用意する必要がある。
この決定の発表時点で新規の有料ないしアプリ内課金のある Chrome 拡張の新規登録は終了している。実際のところ 2020 年 3 月時点で既に「一時的に」停止されており、その措置が恒久化されただけとの由。
シェルスクリプティングには長いオプションを使え
「短いオプション (e.g., -x) はコマンドライン上での略記である。スクリプトにおいては自分や将来の同僚のためにも長いオプション (e.g., ---do-something) を与える方がUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-80774807926752531262020-10-04T22:44:00.005+09:002020-10-04T22:44:51.130+09:00多分週刊チラシの裏 (Sep 21-27, 2020)Killed by Mozilla
Mozilla がディスコンにした製品およびサービスのリスト。
COVID-19 パンデミックで収入が激減し全社の四分の一にあたる従業員の解雇と収益を得られる製品への集中に踏み切った Mozilla Corp. の最初の犠牲はノートアプリ Firefox Notes とファイル送信サービス Firefox Send となった。過去には第三のモバイル OS を目指した Firefox OS とか Mac ネイティブな Gecko ベースブラウザ Camino など懐かしい名前も見られる。
ちなみに元ネタは Google が終了したサービスをリストしている Killed by Google で、こちらは 2020 年 9 月 26 日現在 205 個の製品とサービスが挙がっている。
Firefox 81.0 リリースノート
Mozilla Firefox Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-71813007324961257582020-09-27T17:12:00.000+09:002020-09-27T17:12:24.968+09:00多分週刊チラシの裏 (Sep 14-20, 2020)自分にとってのニュースは自らまとめるしかないと思い至ったので興味深かったものをまとめる。
Moment.js 開発終了
JavaScript における日時処理の定番であった Moment.js の開発がメンテナンスモードへの移行を宣言した。
歴史のあるライブラリであり、オブジェクトが可変で flux アーキテクチャと相性が悪いとか、自前の国際化リソースが全部バンドルされているので昨今の Dead Code Elimination (a.k.a. Tree-Shaking) を伴うバンドラでもサイズが縮まらないといった問題が指摘されていた。 互換性を保ったまま問題を解決できる見込みがなく、非互換な新バージョンをリリースして移行の混乱を生むよりは設計段階で問題を解決している別ライブラリに移行せよとのこと。
参考に個人的な見解を述べると、代替候補として挙げられている dayjs はお勧めしないUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-71002356433086994922020-09-12T20:02:00.006+09:002020-09-12T20:11:28.673+09:00私家版 TypeScript 抽象データ型表現TL, DR;
読んだ: TypeScriptの異常系表現のいい感じの落とし所 | Developers.IO
方向性はとても同意できるがデータがオブジェクトである積極的な理由がないのが分かる。今日び new Success(...) もあるまい。 構造的型付が原則なんだから Namespace Import する前提で型定義と関数を公開してしまった方が単純な FP スタイルで書けて勝手が良い。
そういうわけで僕ならこう書く。
使い方
import * as Result from './result';
function doSomethingFailable(): Result.T<number, Error> {
const r = Math.random();
return r < 0.5
? Result.success(r)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-67244237140288512512020-09-12T19:53:00.001+09:002020-09-12T19:53:10.763+09:00購読ニュースフィードの整理ほとんど Web のメディアにしか触れない情報弱者なのでニュースフィードの選択は大事である。
社会不安が増大している時分にタブロイド的な話題で怒りを転がすのは生産的でないので整理した。
削除したもの
Engadget Japanese
技術系ニュースサイトの筆頭格である Engadet の日本語版、のはずのもの。
原語版の翻訳は少なく抄訳であることも多いが問題はむしろ転載元にないライターの編集で、意図的に地名が除かれた COVID-19 という名称を無視して 「中国武漢を震源地とする新型コロナウィルス」と書き連ねる (ものによっては COVID-19 と無関係な記事にも捩じ込む) 1/2/3/4/5だとか、The Verge が「YouTube が中国共産党への中傷を含むコメントを削除」と報じた見出しを「批判のコメントを自動削除」に書き換えるだとか印象操作が露骨になってきたので読むのをUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-89531270919455404952020-09-07T06:34:00.004+09:002020-09-12T20:12:00.438+09:00BuckleScript が ReScript に改称し独自言語を導入したVia: BuckleScript Good and Bad News - Psellos
OCaml / ReasonML 文法と標準ライブラリを採用した JavaScript トランスパイラである BuckleScript が ReScript に改称した。
公式サイトによると改称の理由は、
Unifying the tools in one coherent platform and core team allows us to build features that wouldn’t be possible in the original BuckleScript + Reason setup.
(単一のプラットフォームとコアチームにツールを統合することで従来の BuckleScript + Reason 体制では不可能であった機能開発が可能になる)
とのこと。要は Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-54992658285545648952020-09-01T01:51:00.004+09:002020-09-01T01:57:53.670+09:00Ruby 3.0 は2020年内リリースvia: Hacket News
プログラミング言語 Ruby のリポジトリにバージョン番号を 3.0 に上げる変更がコミットされた。
Ruby の新版は例年クリスマスにリリースされており (cf. Ruby Releases)、このままいくと2020年12月25日にリリースされるはずだ。
Ruby 3.0 は Ruby 2.0 比で三倍の高速化を果たす “Ruby 3x3” として、マイナーバージョンアップ毎に GC の改良をはじめとした種々の性能向上策が導入されてきた。 2018年の 2.6 に至って JIT コンパイラが試験的に導入されたこともあり、現時点は Ruby 2.0 と比較して二倍の性能は得られているとのこと。主要なベンチマーク対象である SNES エミュレータの optcarrot も同程度。年末までどれだけ目標に漸近できるかが楽しみである。
なお Ruby 3.0 Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-35774143570609268392020-08-29T01:32:00.017+09:002020-09-15T00:30:59.840+09:00LIBLINEAR 2.41 で One-class SVM が使えるようになったので Perl から触ってみよう改訂 (Sep 15, 2020): 必要のない手順を含んでいたのでサンプルコードと記述を修正しました。
CPAN に Algorithm::LibLinear 0.22 がリリースされました (しました。) 高速な線形 SVM およびロジスティック回帰による複数の機械学習アルゴリズムを実装したライブラリである LIBLINEAR への Perl バインディングです。
利用している LIBLINEAR のバージョンが LIBLINEAR 2.30 から LIBLINEAR 2.41 に上がったことで新しいソルバが追加され、One-class SVM (OC-SVM) による一値分類が利用可能になっています (しました。)
OC-SVM って何
一値分類を SVM でやること。
一値分類って何
ある値が学習したクラスに含まれるか否かを決定する問題。 HBO の「シリコンバレー」に出てきた「Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-57252894887664233142020-07-29T04:10:00.003+09:002020-07-29T04:19:30.725+09:00去る6月に Perl 5.32.0 がリリースされたので差分を把握するために perldelta を読んだ件要旨
Perl 5 メジャーバージョンアップの季節がやって来たのでまともな Perl プログラマの嗜みとして perldelta を読んだ。
今回は有り体に言えばルーティン的なリリースで、言語コアの拡張は他言語にも見られる構文が実験的に入ったくらいで大きな変化はない。新機能は RegExp の拡充が主である。
比較的重要と思われる変更点を抜粋する。
新機能
isa 演算子
実験的機能。Python とか Java における isinstance とか instanceof。
これまでも UNIVERSAL::isa があったが、これはメソッドなのでレシーバにオブジェクトでもクラスでもない値 (i.e., 未定義値 / bless されていないリファレンス) を置くと実行時エラーが起きるのが問題だった:
package Foo {
use Moo;
}
package Bar {
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-51311462906431363492019-02-27T04:08:00.000+09:002019-02-27T04:08:22.793+09:00SelectSaver の話筆者の好きな Perl 5 標準モジュールの話をする。実用性は特にない。SelectSaver というモジュールを知っているだろうか。 なにしろラクダ本にも載っている天下の標準モジュールである。ちょっとでも Perl 5 をかじったことのあるプログラマなら知っているだろう。1それでこれは何かというと、オブジェクト生成時にファイルハンドルを select し、破棄時に元のファイルハンドルを再び select するガードオブジェクト、要するに select 専用 Scope::Guard である。このモジュールの意義を知るためにはまず select を知る必要がある。 ニワカでなければ誰でも知っていることだが2、Perl 5 の select は無ないし一引数版 (以下 Prolog 風に select/1 と書く) と三ないし四引数版 (同 select/4) でセマンティクスが丸っきりUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-27882671990166165742018-04-20T02:52:00.002+09:002018-04-20T02:52:50.654+09:00Punning いろいろPerl 6 に colon pairs という構文がある。名前の通りコロンから始まる Pair のコンストラクタで、例えば次のように使う::foo(42) # foo => 42
:bar<yay> # bar => 'yay'; 値が括弧類を使うリテラルの場合は小括弧は不要
:baz # baz => True; 値を省略すると True になる
:!quux # quux => False; 実に Perl らしい否定形
:$var # var => $var言う間でもないがこれは Hash を生成する場合のみならず、名前つき引数を渡す際にも便利である。 :$var という形式は変数の (sigil を除いた) 名前がそのままキーになるので、Perl 5 でよくある f(foo =>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-27618850086492478362017-08-03T14:02:00.002+09:002017-08-03T14:14:45.799+09:00js_of_ocaml の使い方js_of_ocaml (jsoo) は Ocsigen が提供しているコンパイラである。その名の通り OCaml バイトコードから JavaScript コードを生成する。 これを使うことで OCaml で書いたプログラムを Web ブラウザや node.js で実行することができる。インストール単に OPAM を使えば良い:$ opam install js_of_ocaml js_of_ocaml-ocamlbuild js_of_ocaml-ppxバージョン 3.0 から OPAM パッケージが分割されたので、必要なライブラリやプリプロセッサは個別にインストールする必要がある。 とりあえず使うだけなら js_of_ocaml と js_of_ocaml-ppx の二つで十分。後述するように OCamlBuild でアプリケーションをビルドするなら Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1815593124211758484.post-40272100101924784022017-07-31T14:30:00.000+09:002017-07-31T15:10:50.522+09:00OCaml で Web フロントエンドを書く要旨フロントエンド開発に Elm は堅くて速くてとても良いと思う。昨今の Flux 系アーキテクチャは代数的データ型と相性が良い。ところで工数を減らすためにはバックエンドも同じ言語で書いてあわよくば isomorphic にしてしまいたいところだが、Elm はバックエンドを書くには現状適していない。OCaml なら js_of_ocaml でエコシステムを丸ごとブラウザに持って来れるのでフロントエンドもバックエンドも無理なく書けるはずである。まず The Elm Architecture を OCaml で実践できるようにするため Caelm というライブラリを書いている。俺の野望はまだまだこれからだ (未完)Elm と TEA についてElm というプログラミング言語がある。いわゆる AltJS の一つである。 ミニマリスティクな ML 系の関数言語で、型推論を持ち、型クラスを持たず、Unknownnoreply@blogger.com0