Define a primitive data type: Difference between revisions

Content added Content deleted
(add language: Retro)
(added vb; moved "omit from" reason from comment to tag arg)
Line 1,171: Line 1,171:
~&n-=<'sum','difference','product','quotient','remainder'>*~ %QI nat</lang>
~&n-=<'sum','difference','product','quotient','remainder'>*~ %QI nat</lang>
This code creates a new library of functions of natural numbers by selecting several of them by name from the standard <code>nat</code> library and putting a wrapper around each one that checks the bounds on the result and throws an exception if necessary. These functions can be used as drop-in replacements for the standard ones.
This code creates a new library of functions of natural numbers by selecting several of them by name from the standard <code>nat</code> library and putting a wrapper around each one that checks the bounds on the result and throws an exception if necessary. These functions can be used as drop-in replacements for the standard ones.

=={{header|Visual Basic}}==

VB can't really do primitive data types, but they can be faked with classes.

TinyInt.cls:
<lang vb>Private mvarValue As Integer

Public Property Let Value(ByVal vData As Integer)
If (vData > 10) Or (vData < 1) Then
Error 380 'Invalid property value; could also use 6, Overflow
Else
mvarValue = vData
End If
End Property

Public Property Get Value() As Integer
Value = mvarValue
End Property

Private Sub Class_Initialize()
'vb defaults to 0 for numbers; let's change that...
mvarValue = 1
End Sub</lang>

Usage (in this case, from a form):
<lang vb>Public x As TinyInt

Private Sub Form_Click()
'0-11, to give chance of errors; also not integers, because VB massages data to fit, if possible.
x = Rnd * 12
Me.Print x
End Sub

Private Sub Form_Load()
Randomize Timer
Set x = New TinyInt '"Set = New" REQUIRED
End Sub</lang>


=={{header|Visual Basic .NET}}==
=={{header|Visual Basic .NET}}==


Visual Basic has full support for creating your own primitives, but every operator has to be implemented explicitly. Often developers will only implement the parts they are using and skip the rest.
Visual Basic .NET has full support for creating your own primitives, but every operator has to be implemented explicitly. Often developers will only implement the parts they are using and skip the rest.


Also note that some operators return a Double instead of a new LimitedInt. This was by choice in order to match the behavior of Integers in VB.
Also note that some operators return a Double instead of a new LimitedInt. This was by choice in order to match the behavior of Integers in VB.
Line 1,322: Line 1,360:
{{omit from|PARI/GP}}
{{omit from|PARI/GP}}
{{omit from|TI-83 BASIC}}
{{omit from|TI-83 BASIC}}
{{omit from|TI-89 BASIC}} <!-- Does not have user-defined data structures. -->
{{omit from|TI-89 BASIC|Does not have user-defined data structures.}}