Perché il fascino di Scala con la mappa piatta? (Questo non sembra essere lo stesso per mapcat nel mondo Clojure) [chiuso]

3

Nella comunità di Scala - c'è un evidente fascino per la funzione FlatMap .

Ora capisco che FlatMap è significativo perché è usato per la parte vincolante di una Monade. (e che la comunità Clojure non si è ancora immessa nelle Monadi, con alcuni wonderful eccezioni ).

Ora nella comunità Clojure - non esiste un linguaggio culturale corrispondente, ad esempio "MapCat that S ***".

La mia teoria sulla differenza tra le due comunità e la ragione di questa differenza è che le primitive della concorrenza in Clojure si prestano a risolvere i problemi su una singola macchina, in una singola istanza. (Cioè, Clojure è bravo in concorrenza). Mentre nel mondo della Scala, con l'ascesa del modello di attore, Scala è un po 'più focalizzato sulla risoluzione di problemi multi-macchina. Questo focus sui problemi multi-macchina ha una maggiore attenzione a rompere i problemi nelle loro parti, e una maggiore attenzione su ciò che può essere scomposto e Scala. (es. Monoids) (Ora mi rendo conto che c'è un STM in Scala, e che i modelli Actor, Avout e Cascalog sono eccezioni meravigliose a questo - sto facendo una generalizzazione)

La mia domanda è, perché Scala fascination with flatmap ?

(Non sto cercando di iniziare un flamewar - penso che entrambe le comunità abbiano tratto beneficio dall'esistenza di entrambi - sto cercando di capire un comportamento culturale).

    
posta hawkeye 03.12.2013 - 12:03
fonte

1 risposta

7

Now I understand that FlatMap is significant because it is used for the bind part of a Monad. (and that the Clojure community hasn't dived into Monads yet, with some wonderful exceptions).

Penso che sia praticamente l'intera spiegazione. Molti idiomi e approcci di Scala sono derivati da Haskell, quindi presta molta attenzione alla sicurezza dei caratteri, alle monadi, ecc.

Now in the Clojure Community - there is no corresponding cultural idiom, eg "MapCat that S***".

mapcat funziona solo con le raccolte, a differenza di flatMap .

This focus on multi-machine problems has a higher focus on breaking problems down into their parts, and a greater focus on what can be broken down and Scale. (eg Monoids) (Now I realise there is an STM in Scala, and that Actor models, Avout and Cascalog are wonderful exceptions to this - I'm making a generalisation)

Un migliore esempio di questo nel core Clojure è Riduttori.

    
risposta data 03.12.2013 - 12:27
fonte

Leggi altre domande sui tag