Cuenta la frecuencia de las letras en textos mediante computación en paralelo.
El paralelismo consiste en hacer en paralelo cosas que también se pueden hacer de forma secuencial. Un ejemplo habitual es contar la frecuencia de letras. Utiliza el paralelismo para calcular la frecuencia total de cada letra en una lista de textos.
Cuenta las letras, ignorando mayúsculas y minúsculas y descartando lo que no sean letras, y devuelve un diccionario que asocie cada letra minúscula con su recuento. Trata las letras como valores escalares de Unicode; no hace falta normalización Unicode.
Usa pf.Parallel.map!(items, { workers, task }) de la plataforma roc-parallel para procesar los items dados con una función task pura, en paralelo a través de varios hilos (indicados por workers).
Los resultados se devuelven en el orden de entrada una vez procesados todos los elementos.
Solo tienes que editar ParallelLetterFrequency.roc.
A diferencia de la mayoría de los demás ejercicios, este ejercicio usa funciones con efectos.
Ejecuta las pruebas con roc --opt=speed parallel-letter-frequency-test.roc, en lugar de roc test.
Cualquier error que devuelva el código de Roc lo comunica la plataforma, con un formato distinto del habitual.
También puede que quieras echar un vistazo al ejercicio bank-account, que explora otra cara de la concurrencia: aplicar actualizaciones de forma segura a un estado compartido.
Regístrate en Exercism para aprender y dominar Roc con 139 ejercicios y mentoría humana real, todo gratis.
Exploramos las diferencias entre concurrencia y paralelismo, viendo los distintos enfoques que adoptan lenguajes como JavaScript, Go, Elixir y Rust.