Beiträge von Spockman

    Zitat von retrogamer2k6

    Ich hab jetzt folgendes geschrieben;

    Den Grostzeil dieses Codes kannst Du mal wie folgt generieren:

    Code
    (defun make-seq (n sofar)
      (if (> n 100)
          sofar
        (make-seq (+ n 5) `((draw ,n) (turn1)
                            (draw ,n) (turn1)
                            (draw ,n) (turn1)
                            ,@sofar))))

    (ist Emacs-Lisp, sehr aehnlich Scheme) (make-seq 5 nil) liefert jetzt:

    ((draw 100) (turn1) (draw 100) (turn1) (draw 100) (turn1) (draw 95) (turn1) (draw 95) (turn1) (draw 95) (turn1) (draw 90) (turn1) (draw 90) (turn1) (draw 90) (turn1) (draw 85) (turn1) (draw 85) (turn1) (draw 85) (turn1) (draw 80) (turn1) (draw 80) (turn1) (draw 80) (turn1) (draw 75) (turn1) (draw 75) (turn1) (draw 75) (turn1) (draw 70) (turn1) (draw 70) (turn1) (draw 70) (turn1) (draw 65) (turn1) (draw 65) (turn1) (draw 65) (turn1) (draw 60) (turn1) (draw 60) (turn1) (draw 60) (turn1) (draw 55) (turn1) (draw 55) (turn1) (draw 55) (turn1) (draw 50) (turn1) (draw 50) (turn1) (draw 50) (turn1) (draw 45) (turn1) (draw 45) (turn1) (draw 45) (turn1) (draw 40) (turn1) (draw 40) (turn1) (draw 40) (turn1) (draw 35) (turn1) (draw 35) (turn1) (draw 35) (turn1) (draw 30) (turn1) (draw 30) (turn1) (draw 30) (turn1) (draw 25) (turn1) (draw 25) (turn1) (draw 25) (turn1) (draw 20) (turn1) (draw 20) (turn1) (draw 20) (turn1) (draw 15) (turn1) (draw 15) (turn1) (draw 15) (turn1) (draw 10) (turn1) (draw 10) (turn1) (draw 10) (turn1) (draw 5) (turn1) (draw 5) (turn1) (draw 5) (turn1))

    Ein bisschen musst Du jetzt noch dazubauen. Es ist wohl auch klar, wie Du von dieser Erzeugung zur Ausfuehrung kommst. Entweder ueber Makro, eval, oder anstatt den Code (symbolisch) aufzubauen direkt die entsprechenden Funktionen aufrufen.

    Zitat von a9bejo

    Emacs Regexp

    In .emacs hab ich:

    Code
    (defun dups ()
      (interactive)
      (re-search-forward "\\(\\(?:\\b\\w+\\b\\W*\\)+\\)\\W+\\1\\b"))

    Damit finde ich duplizierte Wortgruppen duplizierte Wortgruppen.

    Keine back references haben flex, lex u.v.a.

    Zitat von andras98

    Hi,
    Ich bin mir nicht sicher ob sowas überhaupt mit Regexpressions geht? Kann dass wer bestätigen?


    Es geht mit einer Teil-Regexp fuer jeden Buchstaben (und die dann ver-ODER-n). Manche Engines bieten auch sog. "back references" als Erweiterung, z.B.:

    egrep "([a-z]).*not \1"

    Zitat von sauzachn


    Ist ja nicht so schwer zu verstehen, oder?

    Ich weisz nicht, was daran so schwer zu verstehen ist. Wir haben in Java genau dieselbe Situation wie in C++: In beiden Faellen gibt es Implementierungen mit GC, und in beiden Faellen ist GC nicht notwendig, um als "konform" bzgl. ISO oder eigener Suppe zu gelten, und C++ Implementierungen mit GC gab es eher. Worin besteht jetzt die Neuerung "gegenueber C++"?

    Zitat


    Die Referenzimplementierung, die gleichzeitig (derzeit) die Definition der Sprache ist, enthält aber GC.

    Ja, genauso wie es C++-Implementierungen mit GC gibt. Und? Das ist keine Garantie fuer GC.

    Zitat

    Ich interpretiere das so, dass das "automatic" sicher benötigt wird, aber du dir den Typ aussuchen kannst (Mark and sweep, ... ).

    Das enthaelt auch Typ = none.

    Zitat

    Also hat laut diesem Paper jede Java-Runtime GC zu haben.

    Nur falls Du "keine GC" zu GC-Algorithmen zaehlst. Es gibt auch keine sinnvolle Moeglichkeit, das Implementierungs-unabhaengig zu formulieren. Die meisten ISO-standardisierten Sprachen machen darum auch einen Bogen um GC. Es ist, extrapolierend, daher damit zu rechnen, dass in einem ISO Standard fuer Java, sollte es je einen geben, GC entweder gar nicht erwaehnt wird oder so formuliert wird, dass sie nicht erforderlich ist, um als konform zu gelten (etwa: "an implementation is free to reclaim any ...").

    Zitat von sauzachn

    C/C++: hat keine Garbage Collection.

    Es gibt genuegend Garbage Collectoren fuer C/C++, und GC macht eine C++ Implementierung nicht non-conforming. GC ist ein C++-Implementierungsdetail, das vorhanden sein kann und oft auch vorhanden ist. Man kann das so daher nicht sagen - der ISO Standard schlieszt es jedenfalls nicht aus, und es gibt im Gegenteil immer wieder Bestrebungen, GC in den Standard zu nehmen. Es scheitert meist daran, dass die exakte Formulierung zu schwierig ist. De facto verwendet ohnehin jeder einen GC zumindest als Leak Detector.

    Zitat von sauzachn


    Java: hat Garbage Collection.

    So kann man das nicht sagen. Erstens gibt es mal keinen ISO-Standard, also koennen wir uns nur an die Referenz-Implementierung einer einzigen Firma, und ein paar mehr oder weniger obskure Papers halten. Zweitens: Es gibt (noch?) keine Sprachelemente zur expliziten Deallokation in Java, also wird eine brauchbare Implementierung wohl GC haben. Du kannst Dich aber nicht darauf verlassen. Aus der JVM Specification:

    Zitat

    The Java virtual machine assumes no particular type of automatic storage management system, and the storage management technique may be chosen according to the implementor's system requirements.

    Zitat von sauzachn


    Natürlich gibt es GC schon sehr lange, aber eben nicht in C++, und nur auf diese Sprache habe ich mich in meiner Aussage bezogen.

    Wie gesagt, es gibt GC schon sehr lange, und auch in C++.

    Zitat von sauzachn

    Wenn du schon von Ignoranz sprichst, das "gegenüber C++" hast du überlesen, stimmts?

    Ja, und zwar bewusst und zu Deinen Gunsten. Mit dem Zusatz ist die Behauptung ja sogar faktisch falsch, da Garbage Collection nicht mal mehr noch Jahre vor der Entstehung von C++ eine "Neuerung" darstellte. Wie koennte sie es dann spaeter sein? Falls Du den Zeitverlauf in den Begriff der Neuerung nicht einbeziehst und nur Features vergleichst, halte ich in diesem Sinn Lisp-Makros fuer eine sehr wichtige Neuerung "gegenueber Java".

    Zitat von hal

    was bei C++ nicht möglich ist.


    Ich kann genausogut Java Bytecode aus sauberem C++ erzeugen und den JIT-Compiler optimieren lassen, wie ich Java auf Maschinencode runterkompilieren kann. Wie ich ein Programm letztlich ausfuehre (VM, Interpreter, Compiler etc.), und wie effizient die gewaehlte Strategie ist, ist doch keine Eigenschaft der Sprache.

    Garbage collection ist eine Selbstverstaendlichkeit fuer jede high-level Sprache seit den 60ern. Sie als "sehr wichtige Neuerung" zu bezeichnen ist entweder an Ignoranz oder Humor schwer zu ueberbieten.

    Zitat von freakjan

    hallo,
    ich wollte wissen warum ich hier eine solche Fehlermeldung bekomme??
    ....integer number too large.....

    Verwend java.math.BigInteger zum Rechnen mit arbitrary precision integers in Java.

    Zitat von rose1000


    i have a text file and lines in it, i need to get the contents of the file line by line to a list in my program..

    Code
    main = do
      c <- getContents
      let ls0 = lines c
      let ls1 = map process_line ls0
      putStr (unlines ls1)
    
    
    process_line xs = drop 3 xs


    Now:

    $ cat txt
    1232652
    20aeusatheou
    3209625209856
    aoeu',l.cry,'rcg

    $ cat txt | runhugs test.hs
    2652
    eusatheou
    9625209856
    u',l.cry,'rcg

    Zitat von Trux

    ist es das was du gemeint hast?

    Nein.

    Java
    import java.math.BigDecimal;
    
    
    public class Test{
        public static void main(String[]){
            BigDecimal b1 = new BigDecimal("3.2");
            BigDecimal b2 = new BigDecimal("2.5");
            System.out.println(b1.subtract(b2));
        }
    }


    $ java Test
    0.7

    Zitat von morgan

    Wir versuchen in einen Vektor die Implementierung einer abstrakten Klasse als Pointer einzufügen, der Debugger meldet bei push_back einen uns unerklärlichen Fehler. Hier die Klassen-Hierarchie:

    virtual vector<FractalPosition>* generatePositions() = 0;

    Wieso ist fractals auch ein Pointer (auf einen Vektor)? Hast Du das Objekt schon mit new angelegt? Ein Vektor sollte reichen.

    Zitat von phyllis

    but what if I want to use a list of pointers, is there no way to sort the list then?

    There are many - however, why are you using pointers in the first place? You don't seem to need polymorphism. To avoid copying, declare parameters as references.

    Zitat von NonSense

    Na ja, danke. Aber mir interessiert wie man es selbst ausprogramieren kann. Ohne das eingebaute Prädikat zu nutzen. Hab es mit diesem delete versucht aber eine Sache gefällt mir nicht. Wenn ich z.B. eine Liste [a,b,b,c] habe und möchte das Element b löschen. Kann man das irgendwie machen, dass nur das erste b gelöscht wird und nicht jede b?


    Klar, hier eine Version:

    Ich habe dabei das Hilfspraedikat loesch_/3 eingefuehrt, bei dem die ersten beiden Argumente vertauscht werden um first-argument indexing zu ermoeglichen.