SCSH
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Veränderung (letzte Korrektur) (Änderung, Normalansicht)

Verändert: 1c1
Hier eine Beschreibung der SCSH verweise ich auf
Für eine Beschreibung der SCSH verweise ich auf

Verändert: 7c7
Über Vorteile einer "ausgereiften" Programmiersprace möchte ich mich hier nicht auslassen, Olin Shivers hat in seinem Kommentaren weitaus besser dargestellt als ich es je könnte. Außerdem bin ich ein News Gruppen gebranntes Kind.
Über Vorteile einer "ausgereiften" Programmiersprache möchte ich mich hier nicht auslassen, Olin Shivers hat sie in seinen Kommentaren weitaus besser dargestellt als ich es je könnte. Außerdem bin ich ein News Gruppen gebranntes Kind.

Verändert: 22c22
Es handelt sich hierbei um eine Schablone mit der man wirklich eine Unmenge an Operationen auf Dateien abdeckt. Für die Nicht Scheme eigneweihten unter uns. Mit define (name-of-function parameters ...) wird in Scheme eine Funktion definiert. Es handelt sich dabei schon um eine abkürzende Schreibweise, was aber vernachlässigt werden kann. Der erste Name nach der sich öffnenden Klammer ist der Name der Funktion nachfolgend die Parameter der Funktion.
Es handelt sich hierbei um eine Schablone mit der man wirklich eine Unmenge an Operationen auf Dateien abdeckt. Für die Nicht Scheme Eingeweihten unter uns: Mit define (name-of-function parameters ...) wird in Scheme eine Funktion definiert. Es handelt sich dabei schon um eine abkürzende Schreibweise, was aber vernachlässigt werden kann. Der erste Name nach der sich öffnenden Klammer ist der Name der Funktion nachfolgend die Parameter der Funktion.

Verändert: 24c24
Bei with-cwd handelt es sich um eine Makro (eine Erweiterung von Scheme). In einem mit with-cwd eingeschlossenen Blockes wird nach dem angegebenen directory (hier dir) gewechselt und dort der nachfolgenden Code ausgeführt, bei Beendigung des Blockes befindet man sich wieder im gleichen Verzeichnis wie vorher.
Bei with-cwd handelt es sich um eine Makro (eine Erweiterung von Scheme). In einem mit with-cwd eingeschlossenen Block wird in das angegebene Directory (hier dir) gewechselt und dort der nachfolgende Code ausgeführt, bei Beendigung des Blockes befindet man sich wieder im gleichen Verzeichnis wie vorher.

Verändert: 26c26
Mit for-each steht eine Iterationsmöglichkeit über eine Liste zur Verfügung, for-each erwartet einen Funktion mit einem Parameter und eine Liste die elementweise abgearbeitet wird. Bei der Funktion hier handelt es sich um eine anonyme Funktion die in Scheme (wie auch in Common Lisp) mit (lambda eingeleitet wird. Den einen Parameter der Funktoin nenne ich hier file (da ich über eine Datei list iterieren möchte.
Mit for-each steht eine Iterationsmöglichkeit über eine Liste zur Verfügung, for-each erwartet einen Funktion mit einem Parameter und eine Liste die elementweise abgearbeitet wird. Bei der Funktion hier handelt es sich um eine anonyme Funktion die in Scheme (wie auch in Common Lisp) mit (lambda eingeleitet wird. Den einen Parameter der Funktion nenne ich hier file (da ich über eine Datei list iterieren möchte.

Verändert: 28c28
Nachfolgend schlägt die Eleganz von HOF (higher order functions zu) HOFS sind Funktionen die andere Funktionen als Parameter oder Rückgabewert enthalten. Im Beispiel werden gleich merhfach verschachtelte HOFS benutzt; action ist eine Funktion mit zwei Paramtern. In unserem Fall arbeitet sie auf dem aktuellen Dateinamen und einem irgendwie veränderten Dateinamen. Nun da es sich auch bei transformer um eine HOF handelte liegt eine Schablone vor mit der man beliebige Aktionen mit Dateien anstellen kann.
Nachfolgend schlägt die Eleganz von HOF (HigherOrderFunction?s) zu. HOFS sind Funktionen, die andere Funktionen als Parameter oder Rückgabewert enthalten. Im Beispiel werden gleich mehrfach verschachtelte HOFS benutzt; action ist eine Funktion mit zwei Paramtern. In unserem Fall arbeitet sie auf dem aktuellen Dateinamen und einem irgendwie veränderten Dateinamen. Nun da es sich auch bei transformer um eine HOF handelte, liegt eine Schablone vor mit der man beliebige Aktionen mit Dateien anstellen kann.

Verändert: 30c30
Auf welchen Dateien arbeiten wir nun: Es wird ein Muster übergeben das mit (glob pattern ausgewertet wird. Also so etwass wie ls *.c was mir alle C Dateien in einem Directory auflistet. Statt aber einem Zeichenstrom wird eine Liste von Werten zurückgegeben und genaus das benötigen wir für for-each.
Auf welchen Dateien arbeiten wir nun: Es wird ein Muster übergeben das mit (glob pattern ausgewertet wird. Also so etwas wie ls *.c was mir alle C Dateien in einem Directory auflistet. Statt aber einem Zeichenstrom wird eine Liste von Werten zurückgegeben und genau das benötigen wir für for-each.

Für eine Beschreibung der SCSH verweise ich auf http://www.scsh.net/about/what.html

Kurzbeschreibung (frei nach mir;-) SCSH ist eine in Scheme programmierbare Unix Shell.

Über Vorteile einer "ausgereiften" Programmiersprache möchte ich mich hier nicht auslassen, Olin Shivers hat sie in seinen Kommentaren weitaus besser dargestellt als ich es je könnte. Außerdem bin ich ein News Gruppen gebranntes Kind.

Etwa auch dcous? --hs

Bitte besucht einfach mal http://www.scsh.net und schaut Euch selber mal um.

Hier ein Beispiel für die "Schönheit von Programmen". Ja Ihr könnt mich deswegen ruhig ausbuhen ;-)
  (define (operate-on dir action transformer pattern)
  (with-cwd dir
    (for-each (lambda (file)
                (action file (transformer file)))
              (glob pattern))))

Es handelt sich hierbei um eine Schablone mit der man wirklich eine Unmenge an Operationen auf Dateien abdeckt. Für die Nicht Scheme Eingeweihten unter uns: Mit define (name-of-function parameters ...) wird in Scheme eine Funktion definiert. Es handelt sich dabei schon um eine abkürzende Schreibweise, was aber vernachlässigt werden kann. Der erste Name nach der sich öffnenden Klammer ist der Name der Funktion nachfolgend die Parameter der Funktion.

Bei with-cwd handelt es sich um eine Makro (eine Erweiterung von Scheme). In einem mit with-cwd eingeschlossenen Block wird in das angegebene Directory (hier dir) gewechselt und dort der nachfolgende Code ausgeführt, bei Beendigung des Blockes befindet man sich wieder im gleichen Verzeichnis wie vorher.

Mit for-each steht eine Iterationsmöglichkeit über eine Liste zur Verfügung, for-each erwartet einen Funktion mit einem Parameter und eine Liste die elementweise abgearbeitet wird. Bei der Funktion hier handelt es sich um eine anonyme Funktion die in Scheme (wie auch in Common Lisp) mit (lambda eingeleitet wird. Den einen Parameter der Funktion nenne ich hier file (da ich über eine Datei list iterieren möchte.

Nachfolgend schlägt die Eleganz von HOF (HigherOrderFunction?s) zu. HOFS sind Funktionen, die andere Funktionen als Parameter oder Rückgabewert enthalten. Im Beispiel werden gleich mehrfach verschachtelte HOFS benutzt; action ist eine Funktion mit zwei Paramtern. In unserem Fall arbeitet sie auf dem aktuellen Dateinamen und einem irgendwie veränderten Dateinamen. Nun da es sich auch bei transformer um eine HOF handelte, liegt eine Schablone vor mit der man beliebige Aktionen mit Dateien anstellen kann.

Auf welchen Dateien arbeiten wir nun: Es wird ein Muster übergeben das mit (glob pattern ausgewertet wird. Also so etwas wie ls *.c was mir alle C Dateien in einem Directory auflistet. Statt aber einem Zeichenstrom wird eine Liste von Werten zurückgegeben und genau das benötigen wir für for-each.

Ein Unix Standardbeispiel: Die Umbenennung von allen Dateien in einem Unterverzeichnis in Dateien die nur Kleinbuchstaben enthalten
 (define (downcase-file-names dir pattern)
  (operate-on dir rename-file string-downcase pattern))

Ich benutze meine Schablone und fülle Sie mit mir genehmen Werten. Diese Lösung für eine Unix FAQ Problem finde zumindest ich wunderschön.

Ich werde immer mal wieder SCSH Lösungen hier vorstellen, ich hoffe einige von Euch lassen sich auch von der "Schönheit" verleiten sich einmal die SCSH anzuschauen.


KategorieUnix KategorieShell KategorieLisp KategorieProgrammierBeispiele
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 23. Februar 2003 1:04 (diff))
Suchbegriff: gesucht wird
im Titel
im Text