Domanda

C'è una documentazione standard (come UML per OO) per linguaggi funzionali? Dopo aver scaricato divano db che è scritto in Erlang e guardando il codice sorgente sono rimasto scioccato, non v'è quasi una linea di documentazione. Non c'è bisogno di documentare come tutte queste funzioni dipendono l'uno dall'altro? Ci sono progetti di medie dimensioni liberamente disponibili anche imparare, come vanno le cose con questo paradigma? Meglio documentate

È stato utile?

Soluzione

Il codice deve essere documentato, indipendentemente dalla lingua.

Ci sembra di essere un stile documentazione standard chiamato eDOC . EDOC è in grado di produrre documentazione API esterna; citando una fonte:

  

eDoc è lo standard Erlang   applicazione per documentare l'API Erlang   direttamente all'interno del codice Erlang.

Questo viene fatto riferimento nel sezione relativa alla documentazione in erlang.org :

  

eDoc consente di scrivere la documentazione   di un programma di Erlang come commenti in   il codice sorgente stessa, utilizzando i tag su   la forma "@Name ...". Un file sorgente   non deve contenere i tag per EDOC   per generare la documentazione, ma   Senza modifiche il risultato sarà unico   contenere la disposizione di base   informazioni che possono essere estratto dal   il modulo.

Un concentrato di ricerca di Google vi porterà da qui.

Altri suggerimenti

In linguaggi funzionali come Haskell o ML, che hanno i tipi e tipi di moduli forse (chiamati "firme" a standard ML), i tipi di fornire un sacco di documentazione. In linguaggi funzionali come Scheme, che non hanno tipi controllato dal compilatore, usano "i contratti", invece, tranne quando sono sciatta.

Erlang è stato sviluppato presso Ericsson, e l'industria delle telecomunicazioni ha una cultura molto forte e record di test. Non sarebbe mi sorprende se la documentazione di come queste funzioni dovrebbero funzionare è in una suite di test da qualche parte.

Riepilogo:. le due cose più vicini alla struttura uno standard sono tipi (per linguaggi funzionali, dotate di sistemi di tipo statico) e contratti (per linguaggi funzionali che non dispongono di sistemi di tipo statico)

Questo è un problema molto interessante!

Ci sono due questioni - il primo è commentando il codice e la scrittura della documentazione (in una forma testuale). Questo dovrebbe essere fatto nel solito modo come in linguaggi OO. Faresti basta scrivere panoramica di tutti i moduli, funzioni e tipi che si utilizza nel progetto. In F # (un linguaggio funzionale per NET), è possibile scrivere commenti XML in un modo abbastanza simile come in F # e generare la documentazione da questi commenti. Credo che il F # documentazione su MSDN viene generato automaticamente da questi commenti. Ecco un esempio di codice F # sorgente (se si installa F # per VS 2008, verrà installato anche il codice sorgente di librerie di base, che potrebbe essere una risorsa interessante):

/// Return the first element of the list.
///
/// Raises <c>System.ArgumentException</c> if <c>list</c> is empty
val head: list:'T list -> 'T

La seconda cosa che lei ha citato è UML - non esiste uno standard per disegnare diagrammi per linguaggi funzionali. Questo sembra essere un problema difficile. Tuttavia, è certamente possibile creare schema per il codice che utilizza alcuni libreria specifica. Molte librerie funzionali consentono di comporre il codice componendo diverse funzioni semplici. elaborazione List è un buon esempio:

let custNames = customers |> List.map (fun customer -> customer.Name) 
let empNames = employees |> List.map (fun employee -> employee.Name) 
let result = List.concat [custNames; empNames]

Questo potrebbe essere ben visivamente rappresentato disegnando il flusso dei dati:

+-----------+    +-----+
| customers |--->| map |\
+-----------+    +-----+ \ +--------+   +--------+
                          >| concat |-->| result |
+-----------+    +-----+ / +--------+   +--------+
| employees |--->| map |/
+-----------+    +-----+

disegni simili possono essere fatte per molte librerie funzionali e sembrano essere molto utile (è il genere di cosa si disegna quando si parla di qualcosa con la lavagna). Tuttavia, per quanto ne so non ci sono strumenti per farlo automaticamente (anche se dovrebbe essere possibile IMHO).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top