Haskell: errore lessicale nella stringa/carattere letterale al personaggio 'i'
Domanda
Sono abbastanza nuovo nella programmazione Haskell e ho difficoltà a capire perché sto ricevendo questo errore nel mio codice.
Il mio problema è il seguente: qualsiasi intero positivo che possa essere espresso come i = 2^n*k, dove k è strano, cioè come un potere di 2 volte un numero dispari. Chiamiamo l'esponente di 2 in i. Ad esempio, l'esponente di 2 in 40 è 3 (perché 40 = 2^3*5) mentre l'esponente di 2 in 42 è 1. Se io stesso è dispari, allora n è zero. Se, d'altra parte, sono pari, ciò significa che può essere diviso per 2. Scrivi una funzione Exponentwo per trovare l'esponente di 2 nel suo argomento.
Capisco il psueDocode e sembra abbastanza semplice: dividere in modo ricorsivo i per 2 fino a quando il risultato è strano, il numero di volte in cui la divisione accade è n
Ecco il mio codice (riga 31-32):
exponentOfTwo :: Int -> Int
exponentOfTwo i = if odd i then 0 else 1 + exponentOfTwo (i 'div' 2)
Sto ricevendo l'errore "Errore lessicale nella stringa/carattere letterale al carattere 'I'" sulla riga 32 colonna 62.
Ho provato a cercare una soluzione a questo errore ovunque e finora non ho avuto fortuna.
Soluzione
Per utilizzare una funzione in infix per, circondarlo con backticks (`), non con citazioni singole ('). Questi ultimi sono per i letterali del personaggio, che sono lunghi solo un personaggio.
Altri suggerimenti
Sono i personaggi in giro div
Backquotes piuttosto che citazioni normali? Devono essere per consentire l'utilizzo di un nome di funzione come operatore di infix. L'ho cambiato nella tua definizione e il codice ha funzionato per me.