Show newer

VegeTABLE が生えてくるのは仮想関数だし……とか迷走してた

「オブジェクト指向」してないプログラミング言語を(言語の標準機能として提供されてない継承なんかを模擬することで)オブジェクト指向っぽく書くことと、非関数型言語で関数型プログラミングすることの“難易度”って全然違う?

両方 C で試されてそうなので実例を比較した方が早いかも (適当)

特に前者については COM とか GLib とかのよく使われている実例がある

Show thread

たとえば C を例にとると、OOP なんかぜんぜんできるけど、関数が第一級オブジェクトではないので関数型的な書き方は(関数ポインタとかでがんばれば partial に出来なくはないが)継続やらカリー化はやっぱりほぼムリだし厳しい

関数ポインタ返しても、カリー化したことにならないからなぁ
…ならんよな?

まあならんのよね。なんで高階関数は一部できなくもないが、せめてクロージャ的なのがないとやっぱムリやなになる

単に『On Lisp: Advanced Techniques for Common Lisp』に実装が掲載されていたから以上の話ではなさそう

嘘メタデータの印象深い思い出、なろうで異世界モノが氾濫して異世界転移/転生ジャンルが新設されたとき「異世界でない SF のつもりで書いてたし後ろの方でちゃんとそうであることが判明するのに、運営に勝手に異世界カテゴリに移動・固定されて再設定もできない」みたいなこと言ってる人がいた

御託はいいから fediverse とは何なのか Mastodon とは何なのか、端的に理解する - 何とは言わない天然水飲みたさ
blog.cardina1.red/2022/11/08/f

> 端的に言えば、 Mastodon とか fediverse とかいうのはメールとメルマガのようなものです。

マジでこれしか言うことがない。むこう数ヶ月は同じこと言い続けると思う

C11 とかだと無名構造体とかあるし気合いれれば関数型っぽい書き方のナニカつくれたりするのかね。

関数をインラインに書けないのはだいぶ厳しそう。型を匿名にして値を書けても、 operator() が離れた場所に生えてしまうのでエルゴノミックでない (エルゴノミックでないのは最初からそれはそうという話でしかないが……)

Java とかはだいぶ妙な文法を生やしてたけど、あれは構造体 (に相当する class) がメソッドを持てるという土台があっての話だからなぁ

というか C++ は enum にメンバ関数作らせてくれという気持ちが強い。まあたぶん暗黙の型変換まわりのあれこれで厳しいのだろうけど……

関数型で Objective を名乗っていた OCaml なんかを眺めると得るものがあるかも

めちゃな暴論だろうけど、オブジェクト指向は「書き方」で関数型は「考え方」なのか…いや、まったく適切に思えないぞこの喩え。
C言語から見たらJava言語のclassは考え方めちゃくちゃ変わってるわけだし

Haskell の do 記法や Lisp なんかを見ても手続き型的な書き方は自然に導入されているし、オブジェクト指向はたぶんその上にきれいに乗せられてしまう

Show thread

というか Lisp でオブジェクト指向とか普通にやってたような。 Haskell は知らんけど。

Common Lisp Object System - Wikipedia ja.m.wikipedia.org/wiki/Common

> CLOS は強い型付けをもつ動的(実行時に定義を変更できる)オブジェクトシステムであり、C++やJavaのような静的なオブジェクト指向言語とは大きく異なる。

ホ㍂

> LISPにオブジェクト指向を導入することは簡単である。2ページ程度のコードがあれば実現できる(Graham, 1994)。

あっはい……

そうそう、初めて聞いたのはたぶん多重ディスパッチの文脈だわ

Show older
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.