<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=80.185.155.55</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=80.185.155.55"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/80.185.155.55"/>
	<updated>2026-11-01T07:14:57Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Opal_f%C3%BCr_Linux/Unix&amp;diff=2201</id>
		<title>Opal für Linux/Unix</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Opal_f%C3%BCr_Linux/Unix&amp;diff=2201"/>
		<updated>2005-11-30T00:55:19Z</updated>

		<summary type="html">&lt;p&gt;80.185.155.55: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es fertige Pakete für die gängigsten Linux-Distributionen und andere Unix-Derivate. Wenn ihr Linux verwenden wollt und falls ihr Linux noch nicht auf eurem Rechner installiert habt, könnt ihr einfach [[Opalix]] verwenden, es liefert euch eine komplette Linuxumgebung, ohne es dauerhaft installieren zu müssen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr eine Distribution einsetzt, die hier nicht aufgeführt ist, und gerne ein Paket kompilieren würdet, euch aber nicht so ganz sicher seid, wie das geht, dann wendet euch an [mailto:opalix@freitagsrunde.org opalix@freitagsrunde.org]. Wir helfen euch gerne!&lt;br /&gt;
&lt;br /&gt;
Allerdings muss man leider auch anmerken, dass der Opal-Buildprozess sehr schlecht organisiert ist. So wird z.B. nicht zwischen Kompilation- und Installationsphase unterschieden und die generierten Scripte unterstützen DESTDIR nicht, was aber eigentlich eine zwingende Voraussetzung für ein vernünftiges Packaging in den Distributionen ist. Diese Probleme machen es nicht einfach, Pakete zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
=== SuSE ===&lt;br /&gt;
Das Paket installiert OPAL nach &amp;lt;code&amp;gt;/opt/ocs&amp;lt;/code&amp;gt;. Damit ihr &amp;lt;code&amp;gt;oasys&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;ocs&amp;lt;/code&amp;gt; benutzen könnt, müsst ihr die folgende Zeile in die Datei &amp;lt;code&amp;gt;$HOME/.bashrc&amp;lt;/code&amp;gt; eintragen:&lt;br /&gt;
&lt;br /&gt;
    export PATH=/opt/ocs/bin:$PATH &lt;br /&gt;
&lt;br /&gt;
==== SuSE 10.0 ====&lt;br /&gt;
Dies ist die aktuelle Version von Opal.&lt;br /&gt;
* RPM für i386: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i386.suse10.0.rpm opal-2.3j-1.i386.suse10.0.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
==== SuSE 9.3 ====&lt;br /&gt;
Leider haben wir für SuSE 9.3 keine fertigen Pakete. Falls Du welche kompilierst, stell sie uns bitte [mailto:opalix@freitagsrunde.org zur Verfügung]!&lt;br /&gt;
&lt;br /&gt;
==== SuSE 9.2 ====&lt;br /&gt;
===== 2.3j =====&lt;br /&gt;
Dies ist die aktuelle Version von Opal.&lt;br /&gt;
* RPM für i586: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i586.suse9.2.rpm opal-2.3j-1.i586.suse9.2.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
===== 2.3i =====&lt;br /&gt;
* RPM für i386: [http://opalix.freitagsrunde.org/rpm/opal-2.3i-1.i386.suse9.2.rpm opal-2.3i-1.i386.suse9.2.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
* RPM für i586: [http://opalix.freitagsrunde.org/rpm/opal-2.3i-1.i586.suse9.2.rpm opal-2.3i-1.i586.suse9.2.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
==== SuSE 9.1 ====&lt;br /&gt;
Dies ist die aktuelle Version von Opal.&lt;br /&gt;
* RPM für i386: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i386.rpm opal-2.3j-1.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
==== SuSE 9.0 ====&lt;br /&gt;
Für SuSE 9.0 haben wir leider nur ein veraltetes Paket (Version 2.3h), da uns kein System mit SuSE 9.0 zum Neukompilieren zur Verfügung steht. Dieser Version fehlt der Bugfix zum Kompilieren mehrerer Signaturen unter Linux, man kann sie also nur für einfache Programme verwenden. Falls jemand noch SuSE 9.0 benutzt, wären wir dankbar, wenn er ein Paket für uns kompilieren würde.&lt;br /&gt;
* Paket für i686 (ab P-II, Athlon, etc.): [http://opalix.freitagsrunde.org/rpm/alte_versionen/opal-2.3h-2.i686.suse9.0.rpm opal-2.3h-2.i686.suse9.0.rpm] ([http://opalix.freitagsrunde.org/rpm/alte_versionen/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
==== Bekannte Probleme/Lösungen ====&lt;br /&gt;
&lt;br /&gt;
===== C Compiler fehlt =====&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;: Ihr erhaltet eine Fehlermeldung, die ungefähr so aussieht:&lt;br /&gt;
&lt;br /&gt;
 checking Binom.sign&lt;br /&gt;
 checking Binom.impl&lt;br /&gt;
 compiling Binom.impl&lt;br /&gt;
 /opt/ocs/lib/oasys/ccompiler: line 17: /usr/local/bin/gcc: No such file or directory&lt;br /&gt;
 /opt/ocs/lib/oasys/ccompiler: line 17: exec: /usr/local/bin/gcc: cannot execute: No such file or directory&lt;br /&gt;
 ERROR [C compiler]: /opt/ocs/lib/oasys/ccompiler exited abnormally&lt;br /&gt;
 aborted&lt;br /&gt;
&lt;br /&gt;
Auf einigen neueren Systemen (Ubuntu 5.10, SuSE 10.0) kommt es zu noch nicht genau geklärten Problemen von OCS mit der [[WikiPedia:Gcc|Gnu Compiler Collection (gcc)]]. OCS benötigt den C Compiler und kann ihn nicht finden, so dass es zu diesem Fehler kommt. Wir haben noch nicht herausgefunden, woher der Fehler genau rührt, da er nicht auf allen Systemen reproduzierbar ist, aber es gibt einen Workaround.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung/Workaround&#039;&#039;&#039;: Das Paket gcc installieren. Eventuell muss noch ein Symlink gesetzt werden, damit Opal den Compiler auch findet.&lt;br /&gt;
  ln -s `which gcc` /usr/local/bin/gcc # als root&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
Das Paket installiert OPAL nach &amp;lt;code&amp;gt;/opt/ocs&amp;lt;/code&amp;gt;, damit ihr an der Shell die Kommandos benutzen könnt, müsst ihr die folgende Zeile in eure &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; eintragen:&lt;br /&gt;
&lt;br /&gt;
    export PATH=/opt/ocs/bin:$PATH &lt;br /&gt;
&lt;br /&gt;
==== Fedora Core 4 ====&lt;br /&gt;
&lt;br /&gt;
Ein Paket für Fedora Core 4 ist in Vorbereitung.&lt;br /&gt;
&lt;br /&gt;
Ich konnte keine Pakete bauen, da OCS sich nicht an die autoconf-Vorgaben hält. --[[Benutzer:Felix|Felix]] 16:48, 27. Okt 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
==== Fedora Core 3 ====&lt;br /&gt;
&lt;br /&gt;
Für Fedora Core 3 haben wir dank Christoph Höger ein Package der aktuellen Version 2.3j. Vielen Dank, Christoph! &lt;br /&gt;
&lt;br /&gt;
* RPM für i386: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.FC-3.i386.rpm opal-2.3j-1.FC-3.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
=== Andere RPM-basierte Distributionen ===&lt;br /&gt;
&lt;br /&gt;
* Quellpaket: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.src.rpm opal-2.3j-1.src.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr Opal auf einer anderen RPM-basierten Distribution neukompilieren wollt, könnt Ihr das SRPM-Paket benutzen. Einfach an der Shell&lt;br /&gt;
&lt;br /&gt;
    rpmbuild --rebuild --target i386 opal-2.3j-1.src.rpm &lt;br /&gt;
&lt;br /&gt;
ausführen. Ihr benötigt dabei die Pakete &amp;lt;code&amp;gt;tcl-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tk-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xfree86-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;flex&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;readline-devel&amp;lt;/code&amp;gt;. Wenn ihr neue Pakete baut, wäre es nett, wenn ihr sie hier anderen zur Verfügung stellt. Sagt einfach unter [mailto:opalix@freitagsrunde.org opalix@freitagsrunde.org] Bescheid, wo sie zu finden sind.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt ihr auch das Paket komplett neu aus den Sourcen erstellen. Dazu benötigt ihr das so genannte spec-file. Falls ihr Fragen habt, wie ihr damit ein Paket kompiliert, wendet euch einfach an [mailto:opalix@freitagsrunde.org opalix@freitagsrunde.org]&lt;br /&gt;
&lt;br /&gt;
* spec file: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.spec opal-2.3j-1.spec]&lt;br /&gt;
&lt;br /&gt;
=== Debian ===&lt;br /&gt;
Das Paket für Debian enthält die aktuelle Version 2.3j.&lt;br /&gt;
Es gibt ein &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; Repository:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
deb-src http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Package heißt ocs und lässt sich mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install ocs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
installieren.&lt;br /&gt;
Vielen Dank an Marco Ziech für seine Zeit und Mühe, das Paket und Repository zu erstellen!&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu ===&lt;br /&gt;
Da es anscheinend Probleme mit den Paketen von Debian unter Ubuntu 5.10 &amp;quot;The Breezy Badger&amp;quot; gibt, wird hier erstmal die Quellcode-Installation beschrieben. Die INstallation muß als root ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Benötigte Pakete ====&lt;br /&gt;
tk8.3-dev, libreadline4-dev, gcc, flex&lt;br /&gt;
&lt;br /&gt;
Paketinstallation:&lt;br /&gt;
* xterm oder Konsole öffnen&lt;br /&gt;
* Apt-get aufrufen&lt;br /&gt;
&lt;br /&gt;
 apt-get install tk8.3-dev&lt;br /&gt;
 apt-get install libreadline4-dev &lt;br /&gt;
 apt-get install gcc&lt;br /&gt;
 apt-get install flex&lt;br /&gt;
&lt;br /&gt;
==== OCS Compilierung ====&lt;br /&gt;
Unter &lt;br /&gt;
http://uebb.cs.tu-berlin.de/opal/&lt;br /&gt;
&lt;br /&gt;
findet Ihr die Quellen und die Dokumentation.&lt;br /&gt;
$VERSION ist die Version des Opalpakets (aktuell dürfte das 2.3j sein).&lt;br /&gt;
Wir nehmen mal an Ihr habt sie in Eurem Homeverzeichnis.&lt;br /&gt;
&lt;br /&gt;
* cd ~/&lt;br /&gt;
* tar xvjf ocs-$VERSION-src.tar.bz2&lt;br /&gt;
* tar xvjf gunzip ocs-$VERSION-doc.tar.bz2&lt;br /&gt;
* cd /usr/src&lt;br /&gt;
* mv ~/ocs-$VERSION-src ./&lt;br /&gt;
* cd ocs&lt;br /&gt;
* ./configure&lt;br /&gt;
* make install 2&amp;gt;&amp;amp;1 &amp;gt; log&lt;br /&gt;
* cd /usr/local&lt;br /&gt;
* mv ~/ocs-$VERSION-doc ./&lt;br /&gt;
* ln -s /usr/local/ocs-$VERSION /usr/local/ocs&lt;br /&gt;
&lt;br /&gt;
Es kann ein Weilchen dauern, bei mir hat es ungefähr 5-10 Minuten gedauert(Pentium M 1,6 GHz, 512 MB RAM).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Das Paket für Debian kann man auch für Ubuntu nehmen, allerdings wurde es nur mit Ubuntu 5.10 &amp;quot;The Breezy Badger&amp;quot; getestet. Es kann trotzdem sein, daß es nicht läuft. Einige haben schon Probleme gemeldet.&lt;br /&gt;
&lt;br /&gt;
Wie bei Debian muß man das Repository &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
deb-src http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hinzufügen.&lt;br /&gt;
&lt;br /&gt;
Entweder man macht es mit der GUI oder auf der Kommandozeile:&lt;br /&gt;
&lt;br /&gt;
==== Repository per GUI hinzufügen ====&lt;br /&gt;
* Startleiste -&amp;gt; System -&amp;gt; Systemverwaltung -&amp;gt; Synaptic-Paketverwaltung starte&lt;br /&gt;
* In der Synaptic-Paketverwaltung im Menu Einstellungen -&amp;gt; Paketquellen&lt;br /&gt;
* Im Paketquellen-Fenster auf hinzufügen und benutzerdefiniert anklicken&lt;br /&gt;
* Repository-Zeilen nacheinadner eintragen und FERTIG&lt;br /&gt;
&lt;br /&gt;
==== Repository per Kommandozeile hinzufügen ====&lt;br /&gt;
* Datei /etc/apt/source.list im Editor öffnen&lt;br /&gt;
* Repository-Zeilen (siehe oben) in die Datei eintragen und FERTIG&lt;br /&gt;
&lt;br /&gt;
Nach diesem Prozedere muß Opal noch installiert werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@ubuntulinux &amp;gt; sudo apt-get install ocs &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vielleicht muß vorher noch ein apt-get update gemacht werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@ubuntulinux &amp;gt; sudo apt-get update &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FERTIG.&lt;br /&gt;
&lt;br /&gt;
==== Bei Problemen ====&lt;br /&gt;
Wenn es Probleme gibt, stellt sicher, dass zur Funktion notwendige Pakete installiert sind, mit folgendem Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev tk8.3-dev libreadline4-dev gcc flex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
Ebuilds von Opal und der Opal-Dokumentation finden sich unter [http://user.cs.tu-berlin.de/~jensb/opal-ebuilds.tar.bz2].&lt;br /&gt;
&lt;br /&gt;
==== Hinweise zur Installation des Opal-Ebuilds ====&lt;br /&gt;
Hierbei muss das Gentoo-System angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Innerhalb von &amp;lt;code&amp;gt;/etc/make.conf&amp;lt;/code&amp;gt; ist der Eintrag der &amp;lt;code&amp;gt;PORTDIR_OVERLAY&amp;lt;/code&amp;gt;-Variable nötig. Dafür ist ein eigenes Verzeichnis zu erstellen (im Allgemeinen und im Weiteren &amp;lt;code&amp;gt;/usr/local/portage&amp;lt;/code&amp;gt;) und der Variable zuzuordnen:&lt;br /&gt;
 mkdir -m 755 /usr/local/portage&lt;br /&gt;
 echo &#039;PORTDIR_OVERLAY=&amp;quot;/usr/local/portage&amp;quot;&#039; &amp;gt;&amp;gt; /etc/make.conf&lt;br /&gt;
&lt;br /&gt;
Unterhalb des Verzeichnisses &amp;lt;code&amp;gt;/usr/local/portage&amp;lt;/code&amp;gt; das Verzeichnis &amp;lt;code&amp;gt;dev-lang&amp;lt;/code&amp;gt; und darin die Verzeichnisse &amp;lt;code&amp;gt;opal&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;opaldoc&amp;lt;/code&amp;gt; anlegen und dann in diese beiden Verzeichnisse die nötigen Ebuilds kopieren:&lt;br /&gt;
 mkdir -m 755 /usr/local/portage/dev-lang{,/opal,/opaldoc}&lt;br /&gt;
 cp opal-2.3i.ebuild /usr/local/portage/dev-lang/opal/&lt;br /&gt;
 cp opaldoc-2.3i.ebuild /usr/local/portage/dev-lang/opaldoc/&lt;br /&gt;
&lt;br /&gt;
Da beide Ebuilds maskiert sind, sind an dieser Stelle eventuell noch weitere Schritte nötig; die Installation maskierter Ebuilds ist hier sehr gut erklärt: [http://de.gentoo-wiki.com/Masked Maskierte Ebuilds].&lt;br /&gt;
&lt;br /&gt;
Jetzt einfach:&lt;br /&gt;
 emerge opal opaldoc&lt;br /&gt;
&lt;br /&gt;
Um die neue Version von Opal (2.3&#039;&#039;j&#039;&#039;), die auch mit den neuen binutils klarkommt, zu emergen, sind folgende Schritte nötig:&lt;br /&gt;
 cd /usr/local/portage/dev-lang/opal/&lt;br /&gt;
 cp opal-2.3i.ebuild opal-2.3j.ebuild&lt;br /&gt;
 ebuild opal-2.3j.ebuild digest&lt;br /&gt;
 emerge opal&lt;br /&gt;
&lt;br /&gt;
== FreeBSD ==&lt;br /&gt;
Für all die, die OCS und Opal unter FreeBSD kompilieren wollen, gibt&lt;br /&gt;
es eine kurze Anleitung unter: [http://user.cs.tu-berlin.de/~pdmef/opal/freebsd.html]; fertige Packages für 5.3-RELEASE werden bei größerer Nachfrage erstellt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Opal]]&lt;/div&gt;</summary>
		<author><name>80.185.155.55</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Opal_FAQ&amp;diff=977</id>
		<title>Opal FAQ</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Opal_FAQ&amp;diff=977"/>
		<updated>2005-11-30T00:52:25Z</updated>

		<summary type="html">&lt;p&gt;80.185.155.55: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vor noch nicht allzu langer Zeit, an einem nicht allzu weit entfernten Ort wurden einst alle Studis von einer schweren Programmiersprache dahin gerafft...&lt;br /&gt;
&lt;br /&gt;
Aber nein! Nicht alle!&lt;br /&gt;
&lt;br /&gt;
Eine kleine Gruppe unermüdlich lernender Studenten widersetzten sich dem Bösen, wild entschlossen diesem Missstand ein ende zu bereiten, setzten sie sich zusammen und schrien &amp;quot;[[FAQ]]-[[Opal]]&amp;quot; gen Himmel...&lt;br /&gt;
&lt;br /&gt;
Nun ja, mehr spare ich mir hier, auf jeden Fall haben &amp;quot;damals&amp;quot; jede menge Leute in der newsgroup informatik1 gepostet und sehr wertvolle Tips und Tricks zusammengetragen.&lt;br /&gt;
&lt;br /&gt;
Und die will ich hier jetzt noch einmal gesammelt weitergeben, mir hätte es damals geholfen, vielleicht hat ja noch einmal jemand etwas davon.&lt;br /&gt;
&lt;br /&gt;
== Und so beginnt es... ==&lt;br /&gt;
&lt;br /&gt;
In dem Thread: &amp;quot;Krankheitsbild [[Opal]]&amp;quot; wurde angemerkt doch eine [[FAQ]] (Frequently Asked Questions) zu [[Opal]] zusammenzustellen.&lt;br /&gt;
&lt;br /&gt;
Da all diejenigen die [[Opal]] schon kennen dafür nicht geeignet sind oder dies zumindest glauben ;) sollten wir das doch machen. :))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WHERE funktioniert nicht mit Lambda-Ausdrücken! ===&lt;br /&gt;
&lt;br /&gt;
Wenn man Lambda mit WHERE kombinieren will muss man den ganzen Body der Funktion klammern&lt;br /&gt;
&lt;br /&gt;
Das geht so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF qsolve1 == \\ a, b, c .(   /* &amp;lt;--- */&lt;br /&gt;
   (x1, x2)&lt;br /&gt;
        WHERE&lt;br /&gt;
        x1 == (-(b) + d) / (2 * a)&lt;br /&gt;
        x2 == (-(b) - d) / (2 * a)&lt;br /&gt;
        d == sqrt((b * b) -  (4 * a * c))   &lt;br /&gt;
&lt;br /&gt;
)  /* &amp;lt;----- */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig ist dabei das nach dem Punkt mit dem der Lambda Ausdruck die Argumentliste abschließt kein Leerzeichen oder irgend etwas anderes ist, sondern gleich die öffnende Klammer kommt, ansonsten tut das nicht!&lt;br /&gt;
&lt;br /&gt;
=== Opal funktioniert nicht mit Zahlen über 32? ===&lt;br /&gt;
&lt;br /&gt;
Wenn man in [[Opal]] direkt Zahlen über 32 eingeben möchte, muß man das so hinschreiben: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;zahl&amp;quot;!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &#039;Zahl&#039; irgendeine Zahl sein kann. Wichtig sind die Anführungszeichen und das Ausrufungszeichen dahinter.&lt;br /&gt;
&lt;br /&gt;
=== Wie gebe ich Zahlen, Denotations (Strings), Sequenzen und einzelne Buchstaben (Chars) direkt in den Interpreter ein? ===&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; e FunktionMitVielenArgument(&amp;quot;lkajbblsd&amp;quot;, &amp;quot;627849&amp;quot;!, 30,&amp;quot;c&amp;quot;!, %(1,23,9,1,8))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung Das erste Argument ist eine Denotation, d.h. einfach ein String. &lt;br /&gt;
Die muss man einfach immer in Anführungszeichen setzen. :)&lt;br /&gt;
&lt;br /&gt;
Das zweite ist  eine Zahl. Da sie größer als 32 ist muss man sie als String hinschreiben (Anführungszeichen) den man dann mit dem Operator &amp;quot;!&amp;quot; in eine Zahl umwandeln.&lt;br /&gt;
&lt;br /&gt;
Das dritte ist eine kleinere Zahl als 32, daher kann man sie direkt hinschreiben.&lt;br /&gt;
&lt;br /&gt;
Das vierte ist ein Char, also ein einfacher Buchstabe. Da man das nicht direkt eingeben kann übergibt man Opal wieder einen String und wandelt ihn (da er nur einen Buchstaben enthält mit dem &amp;quot;!&amp;quot; in einen Buchstaben um.&lt;br /&gt;
&lt;br /&gt;
Das fünfte ist eine Sequenz, man kann sie direkt in dieser Form &lt;br /&gt;
hinschreiben, zu beachten gibt es nur ;) dass man so höchstens 8 Elemente verknüpfen kann. Will man mehr eingeben muss man eben 2 (oder noch mehr) dieser Dinger mit ++ verknüpft hinschreiben.&lt;br /&gt;
&lt;br /&gt;
WICHTIG: Sequenzen in dieser Form hin zuschreiben ist _böse_!!! Vor allem sorgt das für viel Verwirrung und verbirgt den wahren Charakter einer Sequenz!! Siehe dazu auch Beitrag Nummer 4. :)&lt;br /&gt;
&lt;br /&gt;
Bsp: eine seq[nat] könnte man also so schreiben.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%(4,3,5,8,2,21,5,5) ++ %(6,&amp;quot;78&amp;quot;!,&amp;quot;269&amp;quot;!,&amp;quot;987&amp;quot;!,&amp;quot;654&amp;quot;!,&amp;quot;321&amp;quot;!)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine seq[seq[nat]] könnte man dann so schreiben&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%( %(1,3,2), %(1,2,3))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(man beachte die notwendige Umwandlung da die Zahlen zum Teil größer als 32 sind. :))&lt;br /&gt;
&lt;br /&gt;
(!!!) Vorsicht (!!!) man sollte im Normalfall keine Leerzeichen zwischen die Argumente setzen! Das funktioniert zwar meistens, leider aber nicht immer! &lt;br /&gt;
(Das gilt natürlich nur für die Kommandozeile, in den Syntax-Files selber sind Leerzeichen ziemlich wurscht. :))&lt;br /&gt;
&lt;br /&gt;
Also nochmal: Vorsicht vor Leerzeichen in Funktionsaufrufen!&lt;br /&gt;
&lt;br /&gt;
Ich hatte schon Fehlermeldungen weil ich in Funktionen nach dem Komma ein Leerzeichen eingebaut hatte.&lt;br /&gt;
&lt;br /&gt;
Bsp: func1(&amp;quot;9023&amp;quot;!, &amp;quot;0234&amp;quot;!)&lt;br /&gt;
&lt;br /&gt;
Lässt man das weg, funktionierte (bisher) alles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
func1(&amp;quot;9023&amp;quot;!,&amp;quot;0234&amp;quot;!)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Speziell wenn man Texte in Nummern umwandelt (siehe oben) scheint das zu Problemen zu führen. (Dieses Problem hatte ich selbst bisher nur wenn ich von der Shell (Kommandozeile aus direkt Argumente in eine Funktion füttern wollte. Ansonsten trat es nicht auf. :)&lt;br /&gt;
&lt;br /&gt;
=== Konstruktion von Listen ===&lt;br /&gt;
Herzlichen dank für diesen Beitrag an Florian Lorenzen .&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Man kann dann viele aussagekräftige Beispiele mit :: und &amp;lt;&amp;gt;&lt;br /&gt;
&amp;gt; angeben (seq, seq[seq], leere seq usw.)&lt;br /&gt;
&lt;br /&gt;
Da ich, wie ich fürchte, mit diesem unsäglichen % angefangen habe -- nicht ahnend welchen didaktischen Flurschaden ich damit anrichten würde -- hier zum Ausgleich einige erklärende Beispiele mit den Listenkonstruktoren.&lt;br /&gt;
&lt;br /&gt;
1. Sei S eine Sequenz aus alphas (FUN S : seq[alpha]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == a :: b :: c :: d :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S ist eine Sequenz aus a, b, c, d und der leeren Liste. Da :: &lt;br /&gt;
rechtsassoziativ ist, wird der obige Ausdruck wie folgt aufgelöst:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~~~&amp;gt; a :: (b :: (c :: (d :: &amp;lt;&amp;gt;)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird also zunächst eine Liste aus d und &amp;lt;&amp;gt; konstruiert, vor die dann c gehängt wird. Die rekursive Struktur der Liste &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Liste := Element :: Liste&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ist deutlich.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S ist eine leere Liste.&lt;br /&gt;
&lt;br /&gt;
2. Sei S eine Sequenz von Sequenzen von alphas (FUN S : seq[seq[alpha]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == (a :: b :: c :: &amp;lt;&amp;gt;) :: (d :: e :: &amp;lt;&amp;gt;) :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Ausdruck wird wie folgt aufgelöst:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~~~&amp;gt; (a :: b :: c :: &amp;lt;&amp;gt;) :: ((d :: e :: &amp;lt;&amp;gt;) :: &amp;lt;&amp;gt;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird also zuerst eine Liste aus dem (d :: e :: &amp;lt;&amp;gt;) und &amp;lt;&amp;gt; kostruiert, vor die dann das Element (a :: b :: c :: &amp;lt;&amp;gt;) gehängt wird. Das die beiden erwähnten Elemente wiederum Listen sind, ändert nichts daran, wie die äußere Sequenz konstruiert wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == (a :: b :: c :: &amp;lt;&amp;gt;) :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S ist eine Liste mit gerade genau einem Element, das wiederum eine Liste ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S ist eine Liste, die aus zwei leeren Listen besteht, nicht aus dreien, wie es zuerst scheint. Dies wird wiederum deutlich, wenn der Ausdruck aufgelöst wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~~~&amp;gt; &amp;lt;&amp;gt; :: (&amp;lt;&amp;gt; :: &amp;lt;&amp;gt;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Klammer wird aus dem Listenelement &amp;quot;&amp;lt;&amp;gt;&amp;quot; durch &amp;quot;:: &amp;lt;&amp;gt;&amp;quot; eine Liste erzeugt, vor die dann das Element &amp;quot;&amp;lt;&amp;gt;&amp;quot; gehängt wird. Daß die beiden Elemente der Liste nun leere Listen (daß es Listen seien müssen, ist sowieso klar) sind, ändert nichts daran, wie die äußere Liste konstruiert wird. Man beachte, daß die enstandene Liste nicht leer ist, daß also aus vielen leeren Listen eine nicht-leere Liste entstehen kann.&lt;br /&gt;
&lt;br /&gt;
Eine Liste aus drei leeren Listen sieht dann dementsprechend folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Liste aus einer leeren Liste so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erst die Definition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
erzeugt eine Liste von Listen, die wirklich leer ist.&lt;br /&gt;
&lt;br /&gt;
Programmierpraktisch sollte beachtet werden, daß&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; oder S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nicht durch &amp;lt;&amp;gt;?(S) oder das Muster f(&amp;lt;&amp;gt;) angefangen werden kann, da S eindeutig nicht leer ist.&lt;br /&gt;
&lt;br /&gt;
=== Häufige Fehlermeldungen ===&lt;br /&gt;
Herzlichen Dank für diesen Tip an Alexander W.&lt;br /&gt;
&lt;br /&gt;
ich halte die Idee mit der FAQ-Liste gar nicht mal so schlecht, also werde ich mal was dazusetzen.&lt;br /&gt;
Folgende Fehlermeldung ist ziemlich haeufig:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Expected ... instead of ....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier handelt es sich um einen einfachen Syntaxfehler. Falls Ihr meint, alles korrekt geschrieben zu haben, überprueft auch nochmal die Klammerung der Ausdrücke (es muss genausoviele öffnende wie schliessende Klammern geben). Vielleicht ist ja auch nur ein FI vergessen worden...&lt;br /&gt;
&lt;br /&gt;
Eine weitere Fehlermeldung lautet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
improperly named function definition target or parameter ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall sollte man ueberpruefen, ob die Deklaration der Funktion (FUN ...) fehlt. Vielleicht ist gerade dieser Teil auskommentiert, oder  man hat schlicht und einfach vergessen, die Signaturdatei zu speichern. Mir ist letzteres auch schon unterlaufen, d.h. man sucht nach einem Fehler, der eigentlich nicht vorhanden ist...&lt;br /&gt;
&lt;br /&gt;
=== Präfix, Infix und Postfixnotation (oder wie man Minuszeichen hassen lernt. ===&lt;br /&gt;
&lt;br /&gt;
Erhält man solche Fehlermeldungen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR [HOF.impl at 32.5-32.33]: undefined identification&lt;br /&gt;
 1. &amp;lt;32,5-33&amp;gt; wrongly typed implementation&lt;br /&gt;
     left:  real-&amp;gt;real&lt;br /&gt;
     right: ((nat**nat-&amp;gt;nat)-&amp;gt;real)-&amp;gt;real&lt;br /&gt;
 2. &amp;lt;32,5-33&amp;gt; wrongly typed implementation&lt;br /&gt;
     left:  real-&amp;gt;real&lt;br /&gt;
     right: ((real**real-&amp;gt;real)-&amp;gt;real)-&amp;gt;real&lt;br /&gt;
 3. &amp;lt;32,5-33&amp;gt; wrongly typed implementation&lt;br /&gt;
     left:  real-&amp;gt;real&lt;br /&gt;
     right: ((real-&amp;gt;real)-&amp;gt;real)-&amp;gt;real&lt;br /&gt;
&lt;br /&gt;
ERROR [check]: language error&lt;br /&gt;
aborted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Könnte das etwas mit dem Gebrauch von Minuszeichen zu tun haben. :(&lt;br /&gt;
&lt;br /&gt;
Ich hatte größte Schwierigkeiten den folgenden Code zum Funktionieren zu überreden, Code-Zeilen wie das hier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN test : ( real -&amp;gt; real ) -&amp;gt; ( real -&amp;gt; real )&lt;br /&gt;
DEF test( r ) == \\ x . r( -x )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktionieren nicht.&lt;br /&gt;
&lt;br /&gt;
Das Problem ist das der Compiler für das minuszeichen ( r( -x )) zwei Argumente zu erwarten scheint. (Obwohl er das laut Spezifikation nicht müsste)&lt;br /&gt;
&lt;br /&gt;
Die Löung lag für mich darin entweder &amp;quot;0 - x&amp;quot; zu schreiben oder das x in eigene Klammern zu setzen  ( x ). Beides funktioniert hier.&lt;br /&gt;
&lt;br /&gt;
Einen änlichen Fehler hatte ich als ich so etwas schreib: &amp;quot; a - b + c &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ich musste das dann als ( a - ( b + c ) ) schreiben damit es &lt;br /&gt;
funktionierte.&lt;br /&gt;
&lt;br /&gt;
Hope it helps!&lt;br /&gt;
&lt;br /&gt;
Hier habe ich noch eine Erklärung von Klaus Didrich bekommen (thx!)&lt;br /&gt;
&lt;br /&gt;
Das Prinzip, dass Funktionen keine Sonderbehandlung erfahren, erstreckt sich auch auf das unäre Minuszeichen. Folgendes geht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-(1)       (analog zu &amp;quot;f(1)&amp;quot;)&lt;br /&gt;
(1-)    (analog etwa zu &amp;quot;(5!)&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dein Problem mit &amp;quot;a - b + c&amp;quot; kann ich allerdings nicht nachvollziehen.&lt;br /&gt;
&lt;br /&gt;
Und gleich nochmal etwas, hierfür danke ich Archi Varius.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ ( 0, 1 ) = 0 + 1 = ( 0, 1 ) +&lt;br /&gt;
&lt;br /&gt;
! 5 = 120 = 5 !&lt;br /&gt;
&lt;br /&gt;
- 1 = 1 -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und nochmal. :)) Diesmal herzlichen Dank wieder an Klaus Didrich.&lt;br /&gt;
&lt;br /&gt;
Wird den in [[Opal]], jeder Infixoperator der nur einen Operand bekommt hinter&lt;br /&gt;
den Operand geschrieben wird? (Das fände ich ja etwas beschränkt...)&lt;br /&gt;
&lt;br /&gt;
:Es ist viel schlimmer :-) Es ist beides möglich. Du kannst jeden einstelligen Operator auch hinter den Operanden schreiben, dazu brauchst Du keine besondere Deklaration.&lt;br /&gt;
&lt;br /&gt;
:Ob man IF &amp;lt;&amp;gt;?(S) THEN ... oder IF S &amp;lt;&amp;gt;? THEN ... schreibt, macht keinen Unterschied. Eine Mischung aus Postfix- und Infix-Applikationen kann der Compiler leider nicht analysieren, da kommt dann die Meldung &amp;quot;no possible bracketing for infix found&amp;quot;. In dem Fall hilft Klammern: (5!) + 3, (S#) &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
:Auch bei zweistelligen Funktionen kann man es sich aussuchen, ob man die Präfix- oder die Infixschreibweise vorzieht: +(5,3) oder 3 + 5 sind beide erlaubt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Oasys an der Shell herumkomandieren: ===&lt;br /&gt;
Herzlichen Dank an Roman Lechtchinsky&lt;br /&gt;
&lt;br /&gt;
Warum funktioniert der Aufruf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; e f(\\x. 2 * x, 4)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
unter oasys nicht?&lt;br /&gt;
&lt;br /&gt;
Das liegt daran, dass Du in oasys fuer jeden Backslash \\ eingeben muss, also&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; e f(\\\\x. ...)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das hat nichts mit OPAL zu tun, sondern mit der Skript-Sprache (TCL), in der&lt;br /&gt;
das Interpreter-Frontend implementiert ist (nehme ich zumindest an).&lt;br /&gt;
Anm.: angeblich ist die readline-Bibliothek verantwortlich...&lt;br /&gt;
&lt;br /&gt;
=== Opal und Zugriffsrechte (ext2 versus fat) ===&lt;br /&gt;
Herzlichen Dank für diesen Tip an Thomas Brinker!&lt;br /&gt;
&lt;br /&gt;
(Setzt [[Opal]] unter [[Linux]] ein)&lt;br /&gt;
&lt;br /&gt;
[[Opal]]-fehlermeldung:&lt;br /&gt;
Operation not permitted&lt;br /&gt;
&lt;br /&gt;
Grund:&lt;br /&gt;
Die Dateien liegen nicht in einer ext2-Partition sondern in einer &lt;br /&gt;
FAT-Partition. (in FAT geht das mit den Zugriffsrechten nicht so gut)&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
Dateien in ext2 Partition umkopieren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fehlermeldungen und was man daraus erkennen kann ===&lt;br /&gt;
&lt;br /&gt;
Bei einem ansonsten korrekten Programm hat mich diese Fehlermeldung vorhin eine laaange Fehlerjagt gekostet...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Person.impl&amp;gt;e Birthday(date(30,12,&amp;quot;79&amp;quot;!)&lt;br /&gt;
ERROR [at 1.3-1.4]: Expected was `)&#039; instead of `IN&#039;&lt;br /&gt;
ERROR [check]: language error&lt;br /&gt;
aborted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hatte ich auf der Eingebe-Zeile im Interpreter eine schließende Klammer vergessen. :))&lt;br /&gt;
&lt;br /&gt;
Man kann diese Fehler recht leicht erkennen. Sie finden immer auf Zeile _1_ Statt. Das ist die Eingabe-Zeile in der Shell. :))&lt;br /&gt;
(&amp;quot; ERROR [at 1.3-1.4]:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Opal-Quelltexte mit TeX/LaTeX setzen ===&lt;br /&gt;
&lt;br /&gt;
[[WikiPedia:TeX|TeX]]/[[WikiPedia:LaTeX|LaTeX]] ist ein sehr mächtiges Textsatzsystem, das für kleinere Dokumente über Diplomarbeiten bis hin zu kompletten Büchern verwendet werden kann.&lt;br /&gt;
&lt;br /&gt;
Da liegt es nahe, einfach auch Hausaufgaben optisch ansprechend in hoher Qualität damit setzen zu lassen.&lt;br /&gt;
&lt;br /&gt;
Für das Setzen von Quellcodes gibt es u.a. das Listings-Package für TeX/LaTeX. Doch weil die Einarbeitung etwas Zeit braucht, gibt es unter [http://user.cs.tu-berlin.de/~pdmef/opal/inf-latex.pdf] eine kurze Anleitung mit allem, was man so braucht, um schnell zu guten Ergebnissen zu kommen.&lt;br /&gt;
&lt;br /&gt;
=== Syntax Highlighting ===&lt;br /&gt;
&lt;br /&gt;
Um den Opal-Modus von Emacs verfügbar zu machen, füge man folgende Zeilen in die Datei ~/.emacs ein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(setq load-path&lt;br /&gt;
      (cons &amp;quot;/home/uebb/uebb/infadm/emacs&amp;quot; load-path)&lt;br /&gt;
      )&lt;br /&gt;
(defvar opal-novice t)&lt;br /&gt;
(require &#039;opal-mode)  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pfadangabe /home/uebb... bezieht sich auf das Fakultätsnetz. Den Opal-Modus startet man in Emacs mittels &amp;quot;M-x opal-mode [enter]&amp;quot;. &lt;br /&gt;
M-x bedeutet: Meta-Taste und x gleichzeitig drücken, wobei Esc gefolgt von x die selbe Wirkung hat.&lt;br /&gt;
&lt;br /&gt;
Für Syntax-Highlighting im [http://vim.org VIM] kopiert euch die Datei [[opal.vim]] in das home-Verzeichnis und fügt (ebenfalls im home-verzeichnis) in der &amp;lt;code&amp;gt;.vimrc&amp;lt;/code&amp;gt; folgende 4 Zeilen an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
au BufRead,BufNewFile *.impl set filetype=opal&lt;br /&gt;
au BufRead,BufNewFile *.sign set filetype=opal&lt;br /&gt;
syntax on&lt;br /&gt;
au! Syntax opal source ~/opal.vim&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Opal]]&lt;/div&gt;</summary>
		<author><name>80.185.155.55</name></author>
	</entry>
</feed>