Skip to content

Latest commit

 

History

History
36 lines (19 loc) · 1.31 KB

zettelkasten.md

File metadata and controls

36 lines (19 loc) · 1.31 KB

This is my zettelkasten (don't look at it)

type classes

  • complex interfaces

  • interpreter style

  • Static and Strong typing (Es gibt kein Casting, sealed traits)

  • Type Inferenz. Der Compiler kann die Typ-Signaturen von Funktionen selbst ermitteln. (Eine explizite Signatur ist aber möglich und oft auch sehr hilfreich für Doku und um Klarheit über Code zu gewinnen.)

  • Eleganz: Viele Algorithmen lassen sich sehr kompakt und nah an der Problemdomäne formulieren.

  • Weniger Bugs durch

    • Purity, keine Seiteneffekte

    • Starke typisierung. Keine NPEs !

    • Hohe Abstraktion, Programme lassen sich oft wie eine deklarative Spezifikation des Algorithmus lesen

    • sehr gute Testbarkeit durch "Composability"

    • Memory Management (sehr schneller GC)

    • Modulare Programme. Es gibt ein sehr einfaches aber effektive Modul System und eine grosse Vielzahl kuratierter Bibliotheken.

    ("Ich habe in 5 Jahre Haskell noch nicht ein einziges Mal debuggen müssen")

  • Performance: keine VM, sondern sehr optimierter Maschinencode. Mit ein wenig Feinschliff lassen sich oft Geschwindigkeiten wie bei handoptimiertem C-Code erreichen.