2013-06-11 10 views
36

Gibt es Beispiele für Idris, die möglicherweise zum Studium und vielleicht für allgemeine Anwendung/"reale Welt" -Anwendung verwendet werden?Praktische Beispiele für Idris

Ich bin einigermaßen kompetent in Haskell, von dem Idris offensichtlich viel zu leihen scheint, und die offizielle FAQ/Dokumentation ist ziemlich nett, aber es wäre sehr hilfreich, einige größere Beispiele zu erforschen. Ziel ist es, Idris für die praktische Softwareentwicklung zu nutzen. TIA.

+2

Ich bin auch in einer ähnlichen Position, relativ kompetent in Haskell (verstehen GADT den Typ Familien, etc ...) und auf der Suche nach vollen abhängigen Typen in Idris. Es wäre schön, noch einige Beispiele auszuarbeiten. – MFlamer

+0

Nur zur Referenz, hier ist eine verwandte Frage zu [real-world agda-Programmen] (http://stackoverflow.com/questions/10931316/real-programs-written-in-agda) (leider geschlossen). –

Antwort

24

Edwin Brady hat ein Repo voller Demos unter https://github.com/edwinb/idris-demos. Unter anderem gibt es ein spielbares Space-Invaders-Spiel, geschrieben mit SDL-Bindings, Effects und der! -Effekt-Syntax (im Grunde eine alternative Syntax zur Do-Notation/>> =).

Auch versuchen wir eine Liste mit einigen verfügbaren Bibliotheken im Wiki zu pflegen: https://github.com/idris-lang/Idris-dev/wiki/Libraries

+4

Vielleicht ist "Bang-Bindung" ein besserer Name für die! Syntax: bang aus dem!, bindend, weil es >> = wird (Erklärung von David Christiansen im #idris-Kanal). – pdxleif

15

Es gibt einen Artikel von Edwin Brady, dem Schöpfer von Idris, der sich mit Fragen der realen Welt wie Effizienz und Nebenläufigkeit befasst: "Correct-by-Construction Concurrency: using Dependent Types to Verify Implementations of Effectful Resource Usage Protocols". Es wird nicht nur erläutert, wie mit Nebenläufigkeit umzugehen ist, sondern es wird auch eine eingebettete domänenspezifische Sprache (EDSL) in Idris erstellt, um mit Nebenläufigkeit umzugehen.

Es wird auch für wissenschaftliche Datenverarbeitung verwendet (die möglicherweise als reale Anwendung gelten kann): Dependently-typed programming in scientific computing. Das Papier enthält aktuelle Beispiele und einige Agda-Beispiele.