Dovrei usare "Mappa" o "Seleziona" per i nuovi operatori simili a quelli dei funtori in C #?

0

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 su Map , cosa succede quando il tipo si adatta anche ad altre strutture algebriche comuni come Contravariant? Manteniamo Contramap e accettiamo la mancata corrispondenza con Select ? Creiamo nomi come ContraSelect ?
  • Se scegliamo Map su Select , 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 ?
posta Carl Leth 28.08.2018 - 23:31
fonte

0 risposte

Leggi altre domande sui tag