Sto progettando un tipo in C # che verrà utilizzato come tipo algebrico in uno stile funzionale, ma non è un tipo di raccolta e non implementa IEnumerable
. Se questo tipo è un Functor, dovrei nominare il suo metodo di proiezione Select
o Map
? Allo stesso modo, se è Filterable, dovrei nominare quel metodo Filter
o Where
? Quali sono i pro e i contro della seguente convenzione di denominazione di LINQ rispetto alla comunità funzionale più ampia?
Per esempi concreti, considera cose come Optional<T>
e IObservable<T>
.
Considerazioni:
- Se scegliamo
Select
suMap
, cosa succede quando il tipo si adatta anche ad altre strutture algebriche comuni come Contravariant? ManteniamoContramap
e accettiamo la mancata corrispondenza conSelect
? Creiamo nomi comeContraSelect
? - Se scegliamo
Map
suSelect
, in che modo "tipo raccolta" può ottenere il nostro tipo prima che siamo più o meno in conflitto diretto con LINQ? - I seguenti nomi LINQ consentono il supporto della sintassi delle query, ma vogliamo incoraggiare o scoraggiare la sintassi delle query per tipi che sono molto diversi da
IQueryable
?