Wie definierst du deinen eigenen Datentyp in Rebol?

8

Da Sie die Parameter von Funktionen auf bestimmte Datentypen beschränken können, liegt es nahe, dass Sie vielleicht Ihren eigenen Datentyp definieren möchten, aber ich kann in den Rebol-Dokumenten nichts sehen, was dies als Merkmal der Sprache vorschlägt (es sei denn Ich sah nicht gut aus).

Was ich erwarte, ist die Fähigkeit, etwas wie das Folgende zu tun:

%Vor%

Ist das möglich? Das Folgende erfüllt mich nicht mit viel Hoffnung:

Ссылка

Vom Link:

  

Zweck: {           Ermöglicht dem Programmierer, benutzerdefinierte REBOL-Datentypen zu definieren       }

Es ist ein ziemlich langes Stück Code. Nicht, worauf ich gehofft hatte.

    
mydoghasworms 19.01.2015, 13:27
quelle

2 Antworten

4

Oft vorgeschlagen, ab heute nicht implementiert nur als experimentelles Patch von Giulio verfügbar .

Alle nützlichen benutzerdefinierten Datentypen Vorschläge kommen normalerweise mit dem Wunsch, sie einzubinden, so dass sie effektiv Dinge wie + oder append überladen können. Es gibt eine interne Abstraktionsebene, die ACTION! genannt wird, die theoretisch einen Platz für diese Hooks bietet:

%Vor%

Aktionen sind eine Art "Methodenaufruf" (d. h. polymorph) für das erste Argument, an das die folgenden Parameter übergeben werden. Derzeit gibt es keine Möglichkeit für Benutzer, Aktionen zu erstellen oder einen neuen Datentyp zu erstellen, der auf sie reagiert.

Für Rebol 3 werden benutzerdefinierte Datentypen unter dem Namen "utype" vorgeschlagen - sehen Sie sich " Was ist über UTYPE bekannt? in Rebol? " für mehr.

In der Objektankündigung für Red bemerkte ich jedoch einiges Drucken Sie am Ende:

  

Um dem Red-Compiler zu helfen, kürzere und schnellere Codes zu erzeugen, wird eine neue #alias-Kompilierungsanweisung eingeführt. Diese Anweisung ermöglicht es Benutzern, eine Objektdefinition in einen "virtuellen" Typ umzuwandeln, der in Typspezifikationsblöcken verwendet werden kann. Zum Beispiel:

%Vor%      

Dieser Zusatz würde nicht nur feinkörnigere Typenprüfungen für Argumente ermöglichen, sondern dem Benutzer auch helfen, seinen Code besser zu dokumentieren.

    
HostileFork 19.01.2015, 22:54
quelle
5

Versuchte eine Implementierung von Utypen in Ссылка

Als Beispiel habe ich complex! utype

Grundsätzlich werden Utypen als Objekte mit speziellen Methoden in gepunkteter Form implementiert: so implementiert .add den + op etc.

Im Moment können Sie alle Aktionen überladen (aber make), und einige Eingeborene (mathematische Funktionen, Vergleich, Form, Form, Druck, Probe)

    
giuliolunati 31.01.2015 00:42
quelle

Tags und Links