• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Erfahrungen mit Racket

ralli

BSD Fanboy
Themenstarter #101
Kleiner Tipp, wenn racket nach der Anleitung von @midnight unter OpenBSD installiert wird, siehe hier:

racket unter OpenBSD installieren

dann wird racket ja ins Homeverzeichnis unter .racket installiert. Um auch Zugriff auf den Ordner bin zu haben, wo sich ja auch scribble befindet, habe ich in meiner .xsession den Path eingetragen:

Code:
export PATH=/home/ralph/.racket/6.12/bin/:$PATH
Der Path muß natürlich dem User angepasst werden, aber das versteht sich ja von selbst.
 
Zuletzt bearbeitet:

ralli

BSD Fanboy
Themenstarter #105
Aber kein MrEd wollen, weil zu komfortabel...
Ja irgendwas ist ja immer...:rolleyes: Und durch Lyx bin ich natürlich verdorben oder verwöhnt.

Ich möchte mal ein konkretes Beispiel geben:

Wenn ich ein langes Dokument habe, dann kann ich in Lyx komfortabel in einer links eingeblendeten Listbox eine bestimmte Section anspringen. Bei scribbel muß ich mich durch einen langen Code durchhangeln, bis ich an die gewünschte Stelle komme. Natürlich könnte ich die Suchfunktion nehmen, aber ich denke Du siehst, was ich meine.
 

ralli

BSD Fanboy
Themenstarter #109
Fuer sehr guten Textsatz kann ich alternativ auch ``Pollen'' empfehlen. Die Qualitaet und Vielfaeltigkeit des Textsatzes ist um Welten besser, allerdings ist die Lernkurve auch um einiges steiler. Ich wollte es nur erwaehnt haben. ;-)
Danke @midnight, habe es schon installiert und werde es mit auch genauer ansehen. Lernen kan man alles und das lernen hört ja bekanntermaßen nie auf. Aber einen Schritt nach dem anderen. Bei scribble ist die Syntax mit LaTeX so verwandt, das ich nicht unheimlich viel Neues lernen muß.
 

ralli

BSD Fanboy
Themenstarter #111
Pollen sieht unpraktisch aus. Wer hat denn bitte dieses Diamantsymbol auf der Tastatur?
Genau das war auch mein erster Eindruck. Aber die Ergebnisse sollen ja gut sein. Aber ich denke, das scribble und pollen nicht vergleichbar sind, weil völlig unterschiedliche Einsatzzwecke. Ich werde jedenfalls erst Mal bei scribble bleiben.
 
Pollen sieht unpraktisch aus. Wer hat denn bitte dieses Diamantsymbol auf der Tastatur?
Ja, ich weiss auch nicht, was sich der Entwickler dabei gedacht hat. Man kann das defaul symbol aber einfach nach eigenen Vorlieben abaendern:

https://docs.racket-lang.org/pollen/Setup.html#(part._setup-overrides)

Ja so geht es auch. :-)
 

ralli

BSD Fanboy
Themenstarter #116
Sagen wir mal so: Pollen ist eher fürs Digital Publishing
Und Scribble primär zum dokumentieren.
Gut. Ist jetzt sehr vereinfacht ausgedrückt, aber nur mal um ne grobe Richtung anzudeuten.
Ganz genau so ordne ich das auch ein. Allerdings ließe sich mit scribble auch ein Buch erstellen, Essays, Artikel, Workshops und was auch immer.
 

Andy_m4

Well-Known Member
Allerdings ließe sich mit scribble auch ein Buch erstellen, Essays, Artikel, Workshops und was auch immer.
Ja. Genauso wie Du mit Pollen auch Dein Racket-Code dokumentieren kannst.
Zusätzlich hast Du noch die Möglichkeit Scribble in Pollen zu integrieren.

Der Punkt ist der: Geht es Dir um solche Sachen wie beispielsweise Dokumentationen für Racketcode schreiben, lohnt der Aufwand sich in Pollen einzuarbeiten eher nicht.
 

ralli

BSD Fanboy
Themenstarter #118
Ich stell Euch hier mal ein kleines Programm vor, einen Editor, nichts Besonderes. Er kann bereits Text laden oder speichern. Aber er ist noch verbesserungswürdig, wordwrap geht noch nicht, hab ich in der Doku nicht gefunden. Mit dem Editor selber habe ich keine Schwierigkeiten gehabt, allerdings die callbacks zum Speichern und Laden eines Textes mußte ich mir im Netz zeitaufwendig zusammen suchen. Auch wenn diese callbacks funktionieren, kann ich nicht wirklich nachvollziehen, warum das so kompliziert gemacht wird. Da werden Zeichen verwendet (λ), die ich überhaupt nicht auf der Tastatur habe. Vielleicht geh ich doch wieder zurück zu den Wurzeln, zu c. Die Dokumentation auch der GUI Wigets ist nicht schlecht aber irgendwie nicht vollständig, wie so oft fehlen Beispiele. Die aber benötige ich, um zu verstehen. Hier mal der Sourcecode:
Code:
#lang racket/gui

(require framework)

  (define f (new frame%
                 [label "Editor"]
                 [width  800]
                 [height 600]
                 [x 570]
                 [y 200]))

  (define c (new editor-canvas% [parent f]))

  (define t (new text%))

  (define mb (new menu-bar% [parent f]))

  (define m-file (new menu% [label "Datei"] [parent mb]))
  (define m-edit (new menu% [label "Bearbeiten"] [parent mb]))

  (define mi-open
    (new menu-item%
         [label "Öffnen"]
         [parent m-file]
         [callback
          (λ (i e)
            (define path (get-file #f f))
            (when path
              (send t load-file path 'text)))]
         [shortcut #\o]
         [shortcut-prefix '(ctl)]))

  (define mi-save
    (new menu-item%
         [label "Speichern"]
         [parent m-file]
         [callback
          (λ (i e)
            (send t save-file #f 'text))]
         [shortcut #\s]
         [shortcut-prefix '(ctl)]))

  (append-editor-operation-menu-items m-edit #f)

  (send t set-max-undo-history 100)

  (send c set-editor t)

  (send f show #t)
editor.png
 

Anhänge

ralli

BSD Fanboy
Themenstarter #120
Das Zeichen λ ist das Zeichen für lambda, es kann also ausgetauscht werden durch lambda. Ja griechisch müßte man können, es ist ja ein Zeichen des griechischen Alphabetes. Jetzt gehe ich mal auf der Suche für wordwrap. Der Editor soll eine Basis werden für ein kleines Programm, was Dokumentationen in html und pdf (wenn LaTeX installiert ist) erzeugt.
 

Andy_m4

Well-Known Member
Ich stell Euch hier mal ein kleines Programm vor, einen Editor,
Ab heute mein Standard-Editor.

wordwrap geht noch nicht, hab ich in der Doku nicht gefunden
Vermutlich musst Du das editor:autowrap-mixin integrieren.
http://docs.racket-lang.org/framewo...amework/main..rkt)._editor~3aautowrap-mixin))

Da werden Zeichen verwendet (λ), die ich überhaupt nicht auf der Tastatur habe.
Das ist ein Lambda und auch ersetzbar durch die Funktion lambda
http://docs.racket-lang.org/referen...m._((lib._racket/private/base..rkt)._lambda))

Das ist eine anonyme Funktion. Also eine Funktion ohne Namen (weil man Namen ja auch nicht immer braucht).
Zur Veranschaulichung:

Code:
(define (hello-fkt name)
  (displayln (~a "Hallo " name)))
ist im Prinzip nur die Kurzschreibweise für

Code:
(define hello
  (lambda (name)
     (displayln (~a "Hallo " name))))
Das Lambda-Zeichen λ findest Du bei DrRacket im Menü Einfügen / Lambda einfügen

Die Dokumentation auch der GUI Wigets ist nicht schlecht aber irgendwie nicht vollständig, wie so oft fehlen Beispiele.
Ja. Beispiele wären an vielen Stellen nicht schlecht.
Oder überhaupt ein Racket Kochbuch.

Aller Anfang ist schwer.
 

ralli

BSD Fanboy
Themenstarter #124
So, das Problem mit wordwrap (automatischer Zeilenumbruch am Zeilenende ist auch gelöst:

Einfach die Zeile:

Code:
(define t (new text%))
ändern in:

Code:
(define t (new text% [auto-wrap #t]))
Das #t steht für TRUE. Es wird also bereits bei der Instanziierung der Klasse mitgegeben.