Haskell è un linguaggio di programmazione funzionale caratterizzato da una forte tipizzazione statica, valutazione pigra, ampio parallelismo e supporto della concorrenza e capacità di astrazione uniche.
type BSTree a = BinaryTree a data BinaryTree a = Null | Node (BinaryTree a) a (BinaryTree a) deriving Show flattenTree :: BinaryTree a -> [a] flattenTree tree = case tree of Null -> [] Node left val right -> (flattenTree left) ++ [val] ++ (flattenTree right) isBSTree :: (Ord …
Ho questo codice (certamente strano) che utilizza obiettivi e GHC . {-# LANGUAGE DataKinds, PolyKinds, FlexibleInstances, UndecidableInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} module Main where import Control.Lens import GHC.Records data Glass r = Glass -- just a dumb …
Problema Considera il seguente problema di progettazione in Haskell. Ho un semplice EDSL simbolico in cui voglio esprimere variabili ed espressioni generali (polinomi multivariati) come x^2 * y + 2*z + 1. Inoltre, voglio esprimere alcune equazioni simboliche sulle espressioni, per esempio x^2 + 1 = 1, così come le …
La Applicativetypeclass rappresenta i lassisti monoidali che preservano la struttura monoidale cartesiana nella categoria delle funzioni tipizzate. In altre parole, visti gli isomorfismi canonici che testimoniano che (,)forma una struttura monoidale: -- Implementations left to the motivated reader assoc_fwd :: ((a, b), c) -> (a, (b, c)) assoc_bwd :: (a, …
Un modello che ho incontrato diverse volte è quello in cui è necessario controllare un elenco di valori mappando un test su di esso e vedendo se uno o tutti gli elementi sono passati. La soluzione tipica è solo quella di utilizzare i comodi built-in alle any. Il problema è …
Mi sono imbattuto in alcune cose irritanti. So che haskell funziona con la forma normale della testa debole (WHNF) e so di cosa si tratta. Digitando il seguente codice in ghci (sto usando il comando: sprint che riduce l'espressione a WHNF a mia conoscenza.): let intlist = [[1,2],[2,3]] :sprint intlist …
Sto imparando Haskell e stavo facendo un semplice programma seed DB per Yesod quando mi sono imbattuto in questo comportamento che trovo difficile da capire: testFn :: Int -> Bool -> [Int] testFn a b = if b then replicate 10 a else [] Sessione GHOD di Yesod: $ :t …
(Ispirato dalla mia risposta a questa domanda .) Considera questo codice (si suppone che trovi l'elemento più grande che sia inferiore o uguale a un dato input): data TreeMap v = Leaf | Node Integer v (TreeMap v) (TreeMap v) deriving (Show, Read, Eq, Ord) closestLess :: Integer -> TreeMap …
Sto cercando di definire una famiglia di macchine a stati con tipi di stati alquanto diversi. In particolare, le macchine a stati più "complesse" hanno stati che si formano combinando gli stati di macchine a stati più semplici. (È simile a un'impostazione orientata agli oggetti in cui un oggetto ha …
Perché questi non sono equivalenti? show $ if someCondition then someInt else some double e if someCondition then show someInt else show someDouble Capisco che se si isola la if ... elseparte nel primo esempio in un'espressione da sola, non è possibile rappresentare il suo tipo con un tipo di …
Sono davvero alle prese con la comprensione di callCC. Ottengo il potere di Continuations e ho usato il concetto in alcuni dei miei progetti per creare concetti interessanti. Ma non ho mai avuto bisogno di usare qualcosa con capacità maggiori di cont :: ((a->r)->r)-> Cont r a. Dopo averlo usato, …
Sto cercando di mettere insieme diversi diagrammi in una specie di tabella. Penso che questo si chiami "stampa indice" , la gente della fotografia lo fa quando deve rivedere molte fotografie contemporaneamente. Comunque, questo è il codice: main :: IO () main = mainWith @(Diagram B) $ (tile . fmap …
Chiuso . Questa domanda deve essere più focalizzata . Al momento non accetta risposte. Vuoi migliorare questa domanda? Aggiorna la domanda in modo che si concentri su un problema solo modificando questo post . Chiuso 7 mesi fa . Di recente, sto cercando di utilizzare Haskell in alcuni dei miei …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.