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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top