Anonymous user
Define a primitive data type: Difference between revisions
→{{header|Julia}}
mNo edit summary |
|||
Line 931:
=={{header|Julia}}==
Julia has true, machine-optimized user defined primitives, but they are defined as contiguous groups of N bits
<lang julia>struct LittleInt <: Integer
function
1 ≤ n ≤ 10 || throw(ArgumentError("LittleInt number must be in [1, 10]"))
end
end
Base.show(io::IO, x::LittleInt) = print(io, x.val)
Base.convert(::Type{T}, x::LittleInt) where T<:Number = convert(T, x.val)
Base.promote_rule(::Type{LittleInt}, ::Type{T}) where T<:Number = T
@eval (Base.$op)(a::
▲for op = (:+, :*, :/, :-, :&, :|, :$, :<, :>, :(==))
▲ @eval (Base.$op)(a::U10,b::U10) = U10((Base.$op)(a.Ulessthan11, b.Ulessthan11))
end
# Test
a =
b =
@show a b
@show a + b
@show b - a
@show a * LittleInt(2)
@show b ÷ LittleInt(2)
@show a * b</lang>
{{out}}
<pre>a = 3
a + b = 7
b - a = 1
a * LittleInt(2) = 6
b ÷ LittleInt(2) = 2
ERROR: LoadError: ArgumentError: LittleInt number must be in [1, 10]</pre>
=={{header|Kotlin}}==
|