?{.}

短くなったとはいえ,他の言語が2バイト(?:)で済ませてしまうところを8バイト(T:F:)も叩くのは忍びない。
そこで配列を利用したシンプルな条件演算子もどきを追加してみる。

!Boolean methodsFor: 'golf'!
? a
  | o |
  o := self ifTrue: [ a first ] ifFalse: [ a last ].
  ^(o isKindOf: BlockClosure) ifTrue: [ o value ] ifFalse: [ o ]!
$ echo '(#Ti now h24>11?{#Afternoon.#Morning})P'|gst gost.st -Q -
#Afternoon

少しマシになった。

しかしこういうのはTrueとFalseに分けて定義したほうがいいのだろうか。流儀がよくわからない。