2010-02-28 15 views

Antwort

6

Es hängt davon ab, was Sie mit dem Schleifenkonstrukt meinen - es gibt verschiedene Arten. Endlosschleifen, Iteratoren - Schleifen, die jedes Element in einem Array oder einen Hash zählen - und allgemeine Schleifen wie C Stil

for (int i = 0; i < 10; i++) 

Wikipedia eine Tabelle mit Unterstützung für solche Konstrukte von Sprache hat: Loop system cross reference table

Um Ihre Frage zu beantworten vollständig, Haskell und Scheme sind zwei Beispiele für Sprachen, die keine Standard-for-Schleifen eingebaut haben; Sie werden im Allgemeinen mit Rekursion durchgeführt.

+0

in Scheme zum Beispiel spielt "Schwanzrekursion" die Rolle eines Schleifenkonstrukts. –

0

Die offensichtliche Antwort (wenn es als Sprache zählt) ist verschiedene Arten von Assemblersprachen.

+2

Ich würde sagen, dass ein bedingter Sprung genau ein "Schleifenkonstrukt" ist, aber es hängt von seiner Definition ab. – Svend

+0

Da das OP "rekursive-only" sagt und der übliche Weg, Iteration in Assembly durchzuführen, Sprünge sind, keine Rekursion, würde ich sagen, dass dies nicht zählt. – sepp2k

+0

Ok ich kann zustimmen, das ist eher eine Frage der Formulierung. Bedingte Sprünge sind "Verzweigungskonstrukte" und solange man "rückwärts" springen kann, könnte es eine Schleife sein. –

4

Erlang hat keine Schleifenkonstrukte. Sie verwenden stattdessen Rekursion.

2

Prolog und andere logic programming languages.

Nebenbei, geht diese Frage nicht mehr oder weniger auf das Programmierparadigma zurück? Imperative Sprachen haben Schleifenkonstrukte; andere haben nicht.

bearbeiten: Sprache speziell entwickelt, um Ihnen die Augen aus machen reißen, wie

5

Functional programming Sprachen (z.B. Haskell, Erlang) haben im allgemeinen keine Schleifen, noch function-level Sprachen (z.B. FP, J) oder logic Sprachen (z Prolog, planer). In der Tat neigt die gesamte Gruppe von declarative Sprachen (von denen Funktion, Funktionsebene, Logik usw. eine Teilmenge sind) dazu, keine Schleifenkonstrukte zu haben.

Aber ...

Dass gesagt wird eine Menge von denen haben Weisen als explizites Looping viel das gleiche zu tun. Gewöhnliches Lisp, zum Beispiel, hat Makros, die Ihnen die Möglichkeit geben, das zu tun, was für gewöhnlich aussieht, während, usw. durch Makrotrick hinter den Kulissen schleift. Dylan (ein sehr un-Lisplike Lisp) geht einen Schritt weiter und hebt solche Makros in etwas auf, das effektiv Teil der Sprache ist (obwohl die Semantik immer noch in Form von Rekursion und Makros definiert werden kann). Gemeinsame Funktionen in funktionalen Sprachen wie z. B. Reißverschlüsse, Karten, Faltungen, Takes usw. sind Funktionen auf höherer Ebene, die die explizite Rekursion hinter einem Funktionsaufruf maskieren und in vielerlei Hinsicht wie verschiedene Schleifenkonstrukte wirken.

Verwandte Themen