Type detection: Difference between revisions

m
→‎{{header|Phix}}: added syntax colouring the hard way, phix/basics
m (Regularize non-standard header markup)
m (→‎{{header|Phix}}: added syntax colouring the hard way, phix/basics)
Line 543:
 
=={{header|Phix}}==
{{libheader|Phix/basics}}
Phix builtin type tests are: integer(), atom(), string(), sequence(), and object(). - theThe latter returns true unless arg is unassigned, also notice that showtype never even attempts to set t to "object", since it is guaranteed to be one of the other four.
<lang Phix>procedure showtype(object o)
<!--<lang Phix>-->
string t = iff(atom(o)?iff(integer(o)?"integer":"atom")
<span style="color: #008080;">procedure</span> <span style="color: #000000;">showtype</span><span style="color: #0000FF;">(</span><span style="color: #004080;">object</span> <span style="color: #000000;">o</span><span style="color: #0000FF;">)</span>
:iff(string(o)?"string":"sequence"))
<span style="color: #004080;">string</span> <span style="color: #000000;">t</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #004080;">atom</span><span style="color: #0000FF;">(</span><span style="color: #000000;">o</span><span style="color: #0000FF;">)?</span><span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span><span style="color: #0000FF;">(</span><span style="color: #000000;">o</span><span style="color: #0000FF;">)?</span><span style="color: #008000;">"integer"</span><span style="color: #0000FF;">:</span><span style="color: #008000;">"atom"</span><span style="color: #0000FF;">)</span>
?{t,o}
<span style="color: #0000FF;">:</span><span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span><span style="color: #0000FF;">(</span><span style="color: #000000;">o</span><span style="color: #0000FF;">)?</span><span style="color: #008000;">"string"</span><span style="color: #0000FF;">:</span><span style="color: #008000;">"sequence"</span><span style="color: #0000FF;">))</span>
end procedure
<span style="color: #0000FF;">?{</span><span style="color: #000000;">t</span><span style="color: #0000FF;">,</span><span style="color: #000000;">o</span><span style="color: #0000FF;">}</span>
 
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
showtype(5)
showtype(7.5)
<span style="color: #000000;">showtype</span><span style="color: #0000FF;">(</span><span style="color: #000000;">5</span><span style="color: #0000FF;">)</span>
showtype("string")
<span style="color: #000000;">showtype</span><span style="color: #0000FF;">(</span><span style="color: #000000;">7.5</span><span style="color: #0000FF;">)</span>
showtype({5,7.5,"string"})</lang>
<span style="color: #000000;">showtype</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"string"</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">showtype</span><span style="color: #0000FF;">({</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7.5</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"string"</span><span style="color: #0000FF;">})</span>
<!--</lang>-->
{{out}}
<pre>
7,795

edits