2012-11-01 22 views

risposta

21

È necessario aggiungere uno spazio tra il lambda e la tilde

\ ~(x,s) -> run (f x) s 

la fonte della confusione è perché \ e ~ sono entrambi validi per gli operatori definiti dall'utente così \~ viene analizzata come uno invece di essere analizzato come l'inizio di un'espressione lambda:

-- Defining a custom \~ operator is allowed: 
let a \~ b = {- ... -} 
+0

Dopo aver sprecato molto più tempo allora mi piacerebbe su questo, ho trovato la soluzione acidentaly mentre scrivevo la versione originale di questa domanda. Immagino che postarlo potrebbe aiutare qualcuno ... – hugomg

+12

Dovresti aggiungere la spiegazione, comunque. Sia '' \ '' che '~' sono simboli e possono essere visualizzati negli operatori, quindi '\ ~' è lexed come un token. –

Problemi correlati