Nutzung der break Anweisung sinnvoll?



  • abc.w schrieb:

    switch (a)
        {
            if (0) case 0: blabla();
            if (0) case 1: blublu();
        }
    

    Ich hoffe das ist Satire...



  • berniebutt schrieb:

    @abc.w Und morgen erklärt jemand, wie man ohne if auskommt? 😕

    In Haskell braucht man es nicht.



  • knivil schrieb:

    berniebutt schrieb:

    @abc.w Und morgen erklärt jemand, wie man ohne if auskommt? 😕

    In Haskell braucht man es nicht.

    In C++ auch nicht.
    Aber es ist nett, sehr nett.



  • knivil schrieb:

    berniebutt schrieb:

    @abc.w Und morgen erklärt jemand, wie man ohne if auskommt? 😕

    In Haskell braucht man es nicht.

    Patternmatching ist doch nur ein verkapptes if.



  • break ist doch nur was für Frickler. 👎



  • 9999999999999999999999999 schrieb:

    knivil schrieb:

    berniebutt schrieb:

    @abc.w Und morgen erklärt jemand, wie man ohne if auskommt? 😕

    In Haskell braucht man es nicht.

    Patternmatching ist doch nur ein verkapptes if.

    Ich bin erst Haskell-Einsteiger, aber Guards sind ja auch nicht sonderlich weit weg vom if, oder?

    MfG SideWinder



  • Also if ist ein Schluesselwort in den meisten Sprachen, in Haskell nicht. Patternmatching und Guards ist trotzdem ein anderes Konzept. Man kann damit if nachbilden, aber mit if eben nicht auf einfache Weise Patternmatching. Patternmatching ist weder ein verkapptes if noch so aehnlich, nur weil man mit einem geringen Teilaspekt dieses Konzeptes if ausdruecken kann.

    Und wenn so daran geht, dann ist jedes if/break/while auch nur ein Test+Sprung in Assembler und auf Binaerebene nur 0en und 1en. Bitte, irgendwo muss man aber eine Trennlinie ziehen.



  • knivil schrieb:

    Also if ist ein Schluesselwort in den meisten Sprachen ...

    So wie andere Schlüsselworte wie for, while, break, goto, etc. auch!. Hatte nicht geahnt, dass meine 'flapsige Bemerkung' überhaupt ein solches Echo auslöst! Man nannte das früher 'Kontrollstrukturen zur Ablaufsteuerung' eines Programmes. Kann mir schwer vorstellen, dass man diese Dinge nicht braucht! 🙄 Allein goto mit Sprungmarken sollte man tunlichst vermeiden oder auf den Ausstieg einer komplexen Funktion beschränken. WinApi-Programmierung ohne break ist auch schwer vorstellbar.



  • knivil schrieb:

    Bitte, irgendwo muss man aber eine Trennlinie ziehen.

    Sprachen mit if: gut
    ~-------Volkards Trennlinie---------------------~
    Sprachen ohne if: böse



  • knivil schrieb:

    Also if ist ein Schluesselwort in den meisten Sprachen, in Haskell nicht. Patternmatching und Guards ist trotzdem ein anderes Konzept. Man kann damit if nachbilden, aber mit if eben nicht auf einfache Weise Patternmatching.

    Sicher. Man braucht nur eine vordefinierte Funktion match().
    Und fertig.

    Patternmatching, zumindest in ocaml/f# (haskell kenne ich nicht gut genug) ist nichts anderes als ein fancy if. Das soll Patternmatching nicht herabwürdigen - patternmantching ist ein geniales Feature. Aber es ist kein anderes Konzept als if. Nur die Bedingung ist eben fancy statt simples true/false.



  • volkard schrieb:

    knivil schrieb:

    Bitte, irgendwo muss man aber eine Trennlinie ziehen.

    Sprachen mit if: gut
    ~-------Volkards Trennlinie---------------------~
    Sprachen ohne if: böse

    👍
    simple
    ~-------knivils Trennlinie---------------------~
    fancy



  • @Shade Of Mine: Was soll das? Einen Compiler ohne if schmeisse ich einfach weg. Um einen Nagel in die Wand zu hauen nehme ich üblicherweise einen Hammer. Man kann das natürlich auch mit einer Kneifzange oder einem anderen harten Gegenstand machen. So ähnlich sehe ich das Programmieren auch - die Compilersprachen bieten Werkzeuge, damit ich das nicht aufwendiger in Assembler machen muss.
    daddeldu :p



  • knivil schrieb:

    Also if ist ein Schluesselwort in den meisten Sprachen, in Haskell nicht.

    Doch, if ist ein Schlüsselwort in Haskell. Ich wünschte es wäre eine Funktion, dem ist aber nicht so.

    if a then b else c
    

    Das ist die Schlüsselwort-if-Syntax von Haskell.



  • berniebutt schrieb:

    @Shade Of Mine: Was soll das? Einen Compiler ohne if schmeisse ich einfach weg.

    Irgendwas hast du nicht verstanden. Aber keine Ahnung was. Dein Post macht in Bezug auf meinen absolut keinen Sinn...



  • Mr. N schrieb:

    knivil schrieb:

    Doch, if ist ein Schlüsselwort in Haskell. Ich wünschte es wäre eine Funktion, dem ist aber nicht so.

    Gut, wieder was gelernt. Gibt es irgendwo im Netz was zum Nachlesen, warum sie es in die Sprache aufgenommen haben?



  • Um eben auch innerhalb einer Funktionsdefinition eine Bedingung abzufragen (und nicht dafür wieder eine neue Funktion (mit Patternmatching!) definieren zu müssen).
    Aus anderen funktionalen Sprachen (wie Miranda, Gofer, Clean, ...) kenne ich:

    abs x = x, if x >= 0
            -x, otherwise
    

    Mittels Pattern-Matching könnte man kaum diese Funktion einfach definieren...



  • Leute, gcc unterstützt ein tolles Feature: Zeiger auf Sprungmarken! In Verbindung mit gotos sind der Phantasie keine Grenzen gesetzt:

    void myfunc(int a, int b)
    {
        static void *location[] = { &&not_greater, &&greater };
    
        goto *location[a > b];
    
    not_greater:
        printf("a <= b\n");
        return;
    
    greater:
        printf("a > b\n");
        return;
    }
    

    Man kann also ruhig ohne die ganzen verschachtelten bösesn ifs programmieren 🙂



  • knivil schrieb:

    Mr. N schrieb:

    knivil schrieb:

    Doch, if ist ein Schlüsselwort in Haskell. Ich wünschte es wäre eine Funktion, dem ist aber nicht so.

    Gut, wieder was gelernt. Gibt es irgendwo im Netz was zum Nachlesen, warum sie es in die Sprache aufgenommen haben?

    Ich weiß es nicht. Haskell 98 ist nun schon ein paar Jahre alt, und vielleicht dachten sie einfach, dass eine Sprache ohne if nicht vollständig wäre oder was weiß ich. Ich fände das als Funktion aber definitiv besser.



  • Ich dachte, ich würde eine Welle der Begeisterung auslösen 😞
    gotos mit Zeigern auf Sprungmarken, hip, hip, hurra!
    hip, hip, hurra!
    hip, hip,



  • abc.w schrieb:

    Ich dachte, ich würde eine Welle der Begeisterung auslösen 😞
    gotos mit Zeigern auf Sprungmarken, hip, hip, hurra!
    hip, hip, hurra!
    hip, hip,

    ich freute mich begrenzt, da ich es schon kannte, hip, hip, hurra! 😉

    übers if(0) case ... ; bzw. while(0) case ... ; freute ich mich richtig... hab ich so noch nie gesehen 😋


Anmelden zum Antworten