purely-functional

___ tag123haskell ___ Haskell ist eine funktionale Programmiersprache mit starker statischer Typisierung, verzögerungsfreier Auswertung, umfangreicher Parallelitäts- und Parallelitätsunterstützung und einzigartigen Abstraktionsfunktionen. ___ qstnhdr ___ Analyse und Design für die funktionale Programmierung [geschlossen] ___ tag123funktionale Programmierung ___ Funktionale Programmierung ist ein Programmierparadigma, das auf der Erzeugung von Abstraktionen unter Verwendung von Funktionen basiert, die Nebeneffekte und Zustandsänderungen vermeidet. Reine funktionale Programmierung ist threadsicher. ___ answer10133250 ___

Ich bin kein Profi, aber ich werde versuchen, einige dieser Fragen zu beantworten.

  

Würden Sie trotzdem die Use-Case-Analyse [?]

verwenden?

Ich verstehe nicht warum nicht. Sammeln Sie Anwendungsfälle und entwerfen Sie eine Modul-API, die Sie bereitstellen möchten und die die Anwendungsfälle erfüllt. Bestimmen Sie, ob die Anwendungsfälle eine Typklasse oder nur einfache Funktionen aufrufen.

  

oder vielleicht strukturierte Analyse und Design?

Ich bin mit diesem Ansatz nicht vertraut, aber nach dem, was ich aus dem Wiki-Artikel entnehme, sieht es so aus, als ob es gut funktionieren würde.

  

Wie definieren Software-Architekten das High-Level-Design des Systems, damit Entwickler es befolgen?

Ich würde annehmen, dass sie ein Modul und die Typen spezifizieren, die jeder Teil des Moduls haben sollte. Auch hier bin ich kein Profi, daher bin ich mir nicht wirklich sicher, was in der Praxis gemacht wird.

  

Was zeigen Sie Kunden oder neuen Entwicklern, wenn Sie ein Design der Lösung präsentieren sollen?

Sie zeigen den Kunden etwas, das für sie Sinn ergibt. Wenn Ihr Kunde schlau genug ist, zeigen Sie ihm einfach die Typ-Signaturen und erklären Sie die wichtigen Funktionen. Wenn sie weniger klug sind, dann zeichne hübsche Bilder oder was immer du tun musst. OOP vergleicht mit realen Objekten, während FP Vergleiche mit ... naja ... Funktionen macht. Der typische Weg, um Neulingen eine Funktion zu veranschaulichen, besteht darin, sie als eine Maschine darzustellen, in die man bestimmte Dinge hineinlegt, und dann kommen andere Dinge heraus.

  

Wie dokumentierst du ein Bild von der ganzen Sache, ohne erst alles schreiben zu müssen?

Ein "Bild"? Definieren Sie einfach die Typ-Signatur für die wichtigen Funktionen und belassen Sie die Implementierung dann als %code% . Es gibt irgendwo ein Paket, das Ihnen bessere Stubs gibt, die Sie zur Kompilierzeit daran erinnern, welche Teile Sie noch implementieren müssen.

  

Gibt es in der funktionalen Welt etwas, das mit UML vergleichbar ist?

Ähm ... nein?

    
___ tag123analysis ___ Analyse ist der Prozess der Suche nach Code, Dokumenten oder Daten, um eine bestimmte Frage zu beantworten oder ein bestimmtes Ergebnis vorherzusagen. ___ tag123softwaredesign ___ Softwaredesign ist die Aufgabe zu entscheiden, welche Eigenschaften, Elemente, Verantwortlichkeiten, Schnittstellen, Beziehungen und Interaktionen erforderlich sind, um eine effektive Software zu erstellen. ___ qstntxt ___

Wie gehen Sie mit Analyse- und Designphasen um, wenn Sie planen, ein System mit einer funktionalen Programmiersprache wie Haskell zu entwickeln?

Mein Hintergrund ist in imperativ / objektorientierten Programmiersprachen, und deshalb bin ich es gewohnt, die Fallanalyse und die Verwendung von UML zu verwenden, um den Entwurf des Programms zu dokumentieren. Aber die Sache ist, dass UML inhärent mit der objektorientierten Art, Software zu machen, verwandt ist.

Und ich bin fasziniert darüber, was der beste Weg wäre, um Dokumentation zu entwickeln und Softwaredesigns für ein System zu definieren, das mit funktionaler Programmierung entwickelt wird.

  • Würden Sie immer noch Anwendungsfallanalyse oder vielleicht strukturierte Analyse und Design statt?
  • Wie definieren Software-Architekten das High-Level-Design des Systems, damit Entwickler es befolgen?
  • Was zeigen Sie Ihren Kunden oder neuen Entwicklern, wenn Sie ein Design der Lösung präsentieren sollen?
  • Wie dokumentierst du ein Bild von der ganzen Sache, ohne erst alles schreiben zu müssen?
  • Gibt es in der funktionalen Welt etwas, das mit UML vergleichbar ist?
___ answer10129172 ___

Sehen wir uns diese Behauptung an:

  

UML ist inhärent mit der objektorientierten Vorgehensweise verbunden   Software.

Erstens ist das nicht wirklich wahr. Sie können weiterhin Interaktionen, Anwendungsfälle, Zustände und Datenmodelle in UML modellieren, unabhängig von der Implementierung.

Zweitens sind die Typklassen von Haskell eine Form der Objektorientierung: Sie stellen eine polymorphe Verteilung für den Typ ihrer Argumente bereit (was verschiedene Funktionsimplementierungen erlaubt, die die Daten dieses Typs verwenden).

Also, ja, wenn Sie wirklich weiterhin UML verwenden wollen, gehen Sie vor.

    
___ tag123purelyfunktional ___ Rein funktional ist ein Begriff in der Informatik, der verwendet wird, um Algorithmen, Datenstrukturen oder Programmiersprachen zu beschreiben, die eine Änderung von Daten zur Laufzeit nicht erlauben. ___
1
Antwort

Lokal einen rein funktionalen Baum bearbeiten

Definieren wir einen Baum T: %Vor% Nehmen wir an, ein neuer Knoten wird zu E hinzugefügt, was T 'ergibt: %Vor% In einer veränderlichen Sprache ist das eine leichte Aufgabe - update einfach E's Kinder und wir sind fertig. In einer unverän...
26.01.2012, 23:11
3
Antworten

Warum müssen wir State Monad verwenden, statt den Status direkt zu übergeben?

Kann jemand ein einfaches Beispiel zeigen, in dem die Zustandsmonade besser sein kann als den Zustand direkt zu übergeben? %Vor% vs %Vor%     
17.07.2015, 12:22
3
Antworten

Wäre es von Vorteil, Lisp-Funktionen als "rein" deklarieren zu können?

Ich habe in letzter Zeit viel über gelesen und die Vorteile, die daraus erwachsen, dass ich rein funktionale Sprache. (Ich bin nicht daran interessiert, Monaden für Lisp zu diskutieren). Es macht für mich Sinn, Funktionen mit Nebenwirkungen...
31.08.2011, 08:38
2
Antworten

Ein Funktions-Imperativ-Hybrid

Reine funktionale Programmiersprachen erlauben keine veränderlichen Daten, aber einige Berechnungen werden eher natürlich / intuitiv imperativ ausgedrückt - oder eine imperative Version eines Algorithmus kann effizienter sein. Ich bin mir bewuss...
16.08.2011, 05:56
2
Antworten

Analyse und Design für die funktionale Programmierung [geschlossen]

Wie gehen Sie mit Analyse- und Designphasen um, wenn Sie planen, ein System mit einer funktionalen Programmiersprache wie Haskell zu entwickeln? Mein Hintergrund ist in imperativ / objektorientierten Programmiersprachen, und deshalb bin ich e...
12.04.2012, 17:57