[闲聊] 物件导向的 Multi-dispatching

楼主: ronin728 (浪人)   2016-11-08 18:01:55
写作业有感,
我今天来嘴炮一下我对程式语言抽象能力的看法 XD
小剧场
"""
资工系学生小明正在设计一个 ML 语言的编译器,
他设计了一套语义系统能将 AST 一步步转成组合语言,
他选择了用 C++/Java 来实(自)现(虐),
但同时他也不想用写好几座 if-else 金字塔,
他希望 C++/Java 能像 Haskell 一样
爽爽用 Pattern matching,
也许 Dynamic dispatching 能够做到类似的效果...?
"""
可惜的是,
C++/Java 只有 Single dispathing,
这种机制所能表达的语法非常有限,
用算用了还是得在 class 中写一堆 if-else。
若 OOPL 要像 FPL 的 Pattern matching 般便利,
唯一的可能就是使用 Multi-methods(Multi-dispatching)。
可惜的是许多 OOPL 根本就没有内建支援,
例如 C++、Java、Python、Ruby ...
这些语言需要靠一些技巧来摹拟、扩充,才能做到这种功能。
( Bjarne 有提出把 Pattern matching 与
Multi-method 加入 C++ 的作法,详见最下方的连结)
题外话 自带 Multi-method 的乖宝宝名单 [
ANSI CL、Racket、Clojure ← 壮哉我大 Lisp
Perl 6 ← 除了$$@@[email protected]/*
作者: esrever   2016-11-09 02:05:00
The express problem 让我想到 data types àla carte XD
继续阅读

Links booklink

Contact Us: admin [ a t ] ucptt.com