Scelte progettuali ADT

1

In che modo decidi quale delle seguenti due rappresentazioni (nella sintassi F #) è la scelta giusta in una situazione particolare?

type Choice = A of string | B of string

o

type ChoiceKind = A | B
type Choice = { Kind: ChoiceKind; Value: string }

Evito deliberatamente di dare un esempio più specifico, in quanto entrambi gli approcci possono "sentirsi più naturali" in uno scenario particolare; Sono interessato al ragionamento generale che va nella scelta progettuale.

    
posta Akash 10.12.2014 - 20:34
fonte

1 risposta

2

Secondo me il primo ha più senso se non c'è molto che puoi sensibilmente fare senza sapere se hai A o B . Se si desidera ottenere incondizionatamente la stringa con la dichiarazione precedente, si finirà con casi ridondanti nella corrispondenza del modello. Certo, potresti facilmente scrivere una funzione per farlo.

Immaginerei che quest'ultimo sia più semplice da utilizzare per altri linguaggi .NET, in quanto mancano la corrispondenza dei pattern, ma puoi simularlo abbastanza bene in C # usando gli argomenti con nome e le espressioni lambda.

Dichiarazione di non responsabilità: non ho mai codificato in F # ma ho familiarità con lo standard ML, che è correlato (tramite OCaml).

    
risposta data 10.12.2014 - 21:41
fonte

Leggi altre domande sui tag