私は再帰的なコンテナのような構造を実装しようとしています。バニラの巡回型定義が実現できない理由は理解できますが、次のことも許可されないのはなぜですか?
typedef cycle = shape('cycle' => ?cycle); // Cyclic typedef (Typing[4014])
作成は簡単に思えます:
$cycle = shape('cycle'=>shape('cycle'=> /* shape(... =>*/ null /* ...) */));
そして、1つを繰り返しても問題はありませんよね?
function recurse(cycle $cycle) {
if(!is_null($cycle['cycle'])) recurse($cycle['cycle']));
}