[ 32| {get value of Roman digit on stack} $'m= $[\% 1000\]? ~[ $'d= $[\% 500\]? ~[ $'c= $[\% 100\]? ~[ $'l= $[\% 50\]? ~[ $'x= $[\% 10\]? ~[ $'v= $[\% 5\]? ~[ $'i= $[\% 1\]? ~[ % 0 ]?]?]?]?]?]?]? ]r: 0 {accumulator} ^r;! {read first Roman digit} [^r;!$][ {read another, and as long as it is valid...} \$@@\$@@ {copy previous and current} \>[\_\]? {if previous smaller than current, negate previous} @@+\ {add previous to accumulator} ]# %+. {add final digit to accumulator and output} 10, {and a newline}