Scalar is a Julia package to facilitate the generation of scalar types. Primarily,Scalar defines an abstract type, AbstractScalar, and a number of methods overloaded for that for its subtypes. The list of overloaded methods includes the following: size, eltype, ndims, length, endof, getindex, first, last, start, next, done, isempty, map, filter. These methods are a subset of the methods defined for the abstract type Number, where those methods that imply a numerical nature of the subtypes are excluded. Additionally, the method filter is included here, where it was not specifically defined for Number.
Dual licensing (GPLv3, alternate commercial) - See LICENSE.md
Installation: julia> Pkg.clone( "https://github.com/sabjohnso/Scalar.jl" )
To define a new scalar type:
type MyScalar <: AbstractScalar
end
using Base.Test
a = MyScalar()
@test length( a ) == 1
@test size( a ) == ()
@test map( identity, a ) == a
@test filter( x->isa( x, MyScalar ), a ) == a
@test filter( x->! isa( x, MyScalar ) == nothing