I am trying to teach myself Smalltalk. A tutorial has this example of a while loop:
|i| i:=5. [i >0] whileTrue:[ Transcript show: ((i*2) asString) ; cr. i:=i-1. ].
As I understand it, whileTrue is a message sent to a BlockClosure, telling the receiving BlockClosure to run the BlockClosure given as the argument as long as the receiver is true.
How is the whileTrue message that BlockClosure responds to implemented without a while loop construct in Smalltalk? Or is it implemented in whatever language the run-time is written in?