Pointfrip - ein pointfree Interpreter in Lazarus

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
metazip
Beiträge: 4
Registriert: Fr 1. Okt 2021, 00:18

Pointfrip - ein pointfree Interpreter in Lazarus

Beitrag von metazip »

Dr. John W. Backus hatte eine Vision: der total strukturierten Programmierung mit der Möglichkeit der
algebraischen Umformbarkeit des Programmcodes, so als ob man Formeln und Gleichungen umstellt.
Einen ersten Entwurf davon gab er mit den FP-Systemen in seiner Turing Award Lecture [1]
zur Verleihung des Turingpreises 1977.
Es ist ein Programmierstil ohne formale Parameter und ohne Lambda-Variablen, den man heute in der
funktionalen Programmierwelt den Pointfree-Stil nennt.
Ich fand diese Art von Stil sehr elegant und habe eine angepastere Form ursprünglich mit Hilfe von Delphi
realisiert. Diese Version bietet zusätzlich Instanzenvariablen an, um auch eine dokumentiertere Form von
Selektoren neben den Integer-Selektoren zu haben. Die Instanzenvariablen haben einen dynamischen Scope,
der bei Interpretern häufiger vorkommt. (Compiler haben oft einen lexikalischen Scope.)
- das Projekt ist Open Source -
Ein Freund meinte, dass man das Projekt in Lazarus anbieten könnte, weil das viel attraktiver ist weil kostenlos:
Ich habe eine neue GUI in Lazarus erstellt und die anderen Units an den Lazarus-Compiler angepasst.
Es ließ sich nur mit der Windowsversion von Lazarus korrekt kompilieren,
die lief bei mir unter Debian Linux mit Wine bzw Linux Mint mit Wine.
Das Projekt ist zu finden unter: https://github.com/metazip/pointfrip
Wer einen Einblick in den Pointfree-Code haben möchte, hier [2], man muss dabei beachten,
dass oft rechts-vor-links gilt wie bei APL.

Hoffentlich macht es Euch so viel Spaß wie mir,
- metazip

[1] https://dl.acm.org/doi/pdf/10.1145/359576.359579
[2] https://github.com/metazip/pointfrip/bl ... andard.txt
Zuletzt geändert von metazip am So 29. Mai 2022, 23:47, insgesamt 3-mal geändert.

Benutzeravatar
h-elsner
Lazarusforum e. V.
Beiträge: 259
Registriert: Di 24. Jul 2012, 15:42
OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 2.2.4, FPC3.2.2
CPU-Target: X86-64; arm 32bit
Wohnort: Illertissen
Kontaktdaten:

Re: Pointfrip - ein pointfree Interpreter in Lazarus

Beitrag von h-elsner »

Wenn ich unlesbaren Quellcode haben möchte, kann ich auch in C programmieren.
Sorry, nur meine persönliche Meinung.

Gruß HE

metazip
Beiträge: 4
Registriert: Fr 1. Okt 2021, 00:18

Re: Pointfrip - ein pointfree Interpreter in Lazarus

Beitrag von metazip »

Danke HE, 数式をそのままコードやデータの流れとして表現されるって、John Backusが夢見てたFPの世界だな。データ処理もそんなふうに記述できると面白いのだけど。 :)

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Pointfrip - ein pointfree Interpreter in Lazarus

Beitrag von Winni »

Hi!

Na dann doch gleich APL mit den lustigen Operatoren.

Z.b. der Dominostein oder das Karo-Ass für Matrizen.

Gab's kostenlos für den Apple ][

Nach einem kurzen Intermezzo mit APL hab ich mich dann doch lieber mit UCSD-Pascal beschäftigt.
Einfach lesbarer.

Winni

PS.: Siehe UTF-8 U+2336 bis U+2395

metazip
Beiträge: 4
Registriert: Fr 1. Okt 2021, 00:18

Re: Pointfrip - ein pointfree Interpreter in Lazarus

Beitrag von metazip »

Danke Winni.

Was hättet Ihr denn geschrieben, wenn ich einen Lisp-Interpreter vorgestellt hätte?
Wahrscheinlich zu viele Klammern?
Ist mein Fehler, dass ich in einem Pascal-Forum einen Programmiersprachen-Interpreter vorstelle.
Ich werde Euch auch nicht bekehren wollen.

Ein Freund von mir meinte ich könnte mein Projekt, was ich in Delphi erstellt habe, auch für Lazarus anbieten,
weil das attraktiver ist, weil kostenlos.

Mir ist schon klar, dass Pascal recht übersichtlich ist. - Was meinte Niklaus Wirth noch?
"C++ is an insult to the human brain."

- Stefan

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Pointfrip - ein pointfree Interpreter in Lazarus

Beitrag von Winni »

Hi!

Ich mecker ja garnicht, dass Du hier ein Interpreter-Projekt vorstellst.
Das ist verdienstvoll.

Aber Du bist in eine Forum mit einer der lesbarsten Sprachen.
Da liegt der Spott nicht fern ...

Aber zur Realität:

Nachdem die zwei Urväter des Gimp zu Lisp im Studium gezwungen waren, hatten sie nach langen Hacken wieder einen core dump mit vielen Megabytes. Sie beschlossen nun etwas Sinnvolles zu schaffen. So enstand der Gimp. Insofern hat Lisp ja auch etwas Produktives hervorgebracht.

Winni

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Pointfrip - ein pointfree Interpreter in Lazarus

Beitrag von theo »

Von dem Thema verstehe ich nichts, aber wenn ich lese
Es ließ sich nur mit der Windowsversion von Lazarus korrekt kompilieren,
die lief bei mir unter Debian Linux mit Wine.
dann werde ich stutzig, zumal hier keine speziellen Abhängigkeiten von externen Libraries zu erwarten sind.

Also kompilieren tut's schon mal, wenn du den Teil mit "shellexecute" in procedure "serverun" (serveunit) auskommentierst, bzw. ersetzt ( https://wiki.freepascal.org/Executing_E ... rograms/de ). Oben in serveunit noch uses Windows und ShellAPI entfernen.

Dann noch ein paar Probleme mit Slashes "\" => "/", danach müsste es eigentlich Cross Platform tauglich sein.

S.a. https://wiki.freepascal.org/Multiplatfo ... nd_folders

metazip
Beiträge: 4
Registriert: Fr 1. Okt 2021, 00:18

Re: Pointfrip - ein pointfree Interpreter in Lazarus

Beitrag von metazip »

Danke Theo.

Die Kompilation unter der Linuxversion von Lazarus brachte eine Applikation hervor,
in der das OnIdle-Event zweimal ganz schnell hintereinander feuerte,
so dass dies eine doppelte Ausgabe des Resultats hervor brachte.
Außerdem scrollte das Memo nicht, wenn ein memo.lines.append(txt) stattfand.

Ich war erst einmal enttäuscht von der Kompilation. :(

- Stefan

Antworten