では、(>>844が言うところの)プロセス指向言語でもある GHC(KL1) で参戦w

% オブジェクト TAMA の定義

tama(InqueryStream, ReplyStream) :- tama(InqueryStream, ReplyStream, 'TAMA').

tama([namae | InqueryStream], [Name | ReplyStream], Name) :- tama(InqueryStream, ReplyStream, Name).
tama([nake | InqueryStream], ['NYA NYA' | ReplyStream], Name) :- tama(InqueryStream, ReplyStream, Name).
tama([shine | InqueryStream], ['GYA---' | ReplyStream], Name) :- tama(InqueryStream, ReplyStream, Name).


% オブジェクトTAMA の使い方。ここで、instream はキー入力(標準入力)に、outstream は画面出力(標準出力)に相当する。

?- instream(InqueryStream), tama(InqueryStream, ReplyStream), outstream(ReplyStream).