Aktuelle Zeit: 05.12.2020 06:50

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Autor Nachricht
 Betreff des Beitrags: Re: Lizard - Skriptsprache für symbolische Berechnungen und
BeitragVerfasst: 21.11.2020 17:14 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Danke für die Antwort, die neue Version und die neuen Funktionen!
Auch die beiden neuen erweiterten Beispiele sind sehr hilfreich.

Mir ist aufgefallen, dass in der Datei "Lizard.pbi" die Prozedur Terminate() 2x deklariert wird. :-)
Ich staune, dass PureBasic das nicht anmeckert:
Zitat:
Code:
Declare.i Terminate()      ; Terminates the kernel of Lizard and releases all resources.
[...]
Declare.i Terminate()      ; Terminates the kernel of Lizard. All resources are released.

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Lizard - Skriptsprache für symbolische Berechnungen und
BeitragVerfasst: 22.11.2020 12:23 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Hallo Stargåte,

ich weiß, es ist noch nicht Weihnachten. Aber ich habe schon jetzt ein paar Wünsche bzw. Vorschläge. :-)

a) Ich fände es besser, wenn die Funktion Table() in Iterate() umbenannt würde. Dass sie Table() heißt hat mich von Anfang an stark irritiert. Iterate() dagegen drückt direkt aus, was die Funktion macht und verbessert so deutlch die Lesbarkeit des Lizard-Quellcodes. Vergleiche z.B.
Code:
Lizard::Evaluate("Factorial(n?Integer) := Apply(Times, Table(i, {i, n}))")
mit
Code:
Lizard::Evaluate("Factorial(n?Integer) := Apply(Times, Iterate(i, {i, n}))")

Außerdem wäre dann der Name Table frei für etwas anderes. In dem neuen Beispiel 8 zeigst Du, wie Lizard ein String übergeben wird der eine Datentabelle aus einer Datei enthält, und wie man diesen dann mit Lzard in eine Liste von Listen umwandelt - also quasi in eine Lizard-Tabelle. Wenn man statistische Daten mit Lizard verarbeiten will, dann ist das eine Standard-Sache, die man dauernd braucht. Ich fände es angemessen, wenn Lizard dafür eine elegante Funktion zur Verfügung stellen würde, die man einfach etwa so verwenden könnte:
Code:
Lizard::Evaluate("data = Table(Content, ListeDerSpaltentrennzeichen, ListeDerZeilentrennzeichen)")
Ich finde es sehr intuitiv, für solch eine Funktion den Namen Table zu verwenden.


b) Gerade durch den sehr flexiblen Umgang mit Listen bietet es sich wahrscheinlich an, in Lizard früher oder später Funktionen zu integrieren (durch Dich oder durch andere, wenn Lizard Open Source sein wird), die mit Mengen arbeiten (Erzeugen von Schnittmengen, Vereinigungsmengen, Teilmengen usw.). Es wäre gut, wenn die Begriffe "Set" und "Partition" dann noch nicht vergeben wären.
Meine Umbenennungs-Vorschläge:

Set() -> Assign()
SetDelayed() -> AssignDelayed()
Partition() -> Group()

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Lizard - Skriptsprache für symbolische Berechnungen und
BeitragVerfasst: 22.11.2020 13:01 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Hallo Nino,

das mit der doppelten Deklaration fixe ich beim nächsten Update.

Nun zu den Funktionsnamen. Ja, bei der Namensgebung für Funktionen in Lizard habe ich mich "leider" zimlich stark an Mathematica orientiert. Leider, weil ich teilweise selber nicht zufrieden bin, wie die Sachen heißen, aber auch weil es ja eigentlich keine Kopie werden soll. Der Name Table kommt ja daher, das diese Funktion eine Tabelle erzeugt, auch wenn es je nach Parametern ggf. nur eine Einzeilige/-spaltige Tabelle ist, also eine Liste. Iterate wäre eine alternative, gebe ich zu. Später soll z.B. auch eine übliche Funktion wie For kommen, die praktisch das selbe macht, nur keine Liste erzeugt, sondern nur durchläuft.
Die Idee mit Set zu Assign zu machen finde ich gut, zumal es ja nur formal ist, da man vermutlich immer den Operator = oder := nutzt. Ob ich später Mengen mit "Set(1,2,3)" definieren möchte oder ob ich dafür auch die Listen nutze weiß ich noch nicht.

Ganz nebenbei ist es natürlich jedem Freigestellt ein Names-Package zu nutzen, bei dem die Namen ersetzt werden, was ja in Lizard problemlos geht, wobei natürlich Table dann immer noch belegt wäre:
Code:
In(1)   :=  Iterate = Table
Out(1)   =  Table
In(2)   :=  Iterate(i, {i,1,5})
Out(2)   =  {1, 2, 3, 4, 5}


Zur Datenverarbeitung: Es wird in Zukunft definitiv eine Funktion Import geben, die eine Datei importiert. Bei dieser Funktion kann man dann angeben, um was es sich handelt (z.B. Tabelle) und wie die Separatoren sind. Dann fällt das aktuell noch unhandliche Beispiel weg.

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye