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
SelectsuMap, cosa succede quando il tipo si adatta anche ad altre strutture algebriche comuni come Contravariant? ManteniamoContramape accettiamo la mancata corrispondenza conSelect? Creiamo nomi comeContraSelect? - Se scegliamo
MapsuSelect, 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?