Define a primitive data type: Difference between revisions
Content added Content deleted
(Add Nimrod) |
(Adds Clojure solution) |
||
Line 286: | Line 286: | ||
unsigned char value; // we don't need more space |
unsigned char value; // we don't need more space |
||
};</lang> |
};</lang> |
||
=={{header|Clojure}}== |
|||
Use proxy on java.lang.Number so it can be used in Clojure's math operations. |
|||
<lang clojure>(defn tinyint [^long value] |
|||
(if (<= 1 value 10) |
|||
(proxy [Number] [] |
|||
(doubleValue [] value) |
|||
(longValue [] value)) |
|||
(throw (ArithmeticException. "integer overflow"))))</lang> |
|||
=={{header|Common Lisp}}== |
=={{header|Common Lisp}}== |
||
The built-in integer type specifier provides range parameters. <code>deftype</code> may be used to define an alias for it. |
The built-in integer type specifier provides range parameters. <code>deftype</code> may be used to define an alias for it. |
||
Line 317: | Line 328: | ||
Note, however, that the standard does not specify what happens in the event that a declaration is false (though [[SBCL]], for example, does perform type checks on any declaration except when <code>safety</code> is 0); use <code>check-type</code> for portable bounds checks. |
Note, however, that the standard does not specify what happens in the event that a declaration is false (though [[SBCL]], for example, does perform type checks on any declaration except when <code>safety</code> is 0); use <code>check-type</code> for portable bounds checks. |
||
=={{header|D}}== |
=={{header|D}}== |
||