Zaloguj się, aby obserwować  
Obserwujący 0
Bartosz Wójcik

Błąd kompilacji Haskella

4 posty w tym temacie

Mam mały problem z kompilacją kodu:

-- encrypted with https://www.stringencrypt.com (v1.0.0) [Haskell]
module Main where
 
import qualified Data.Char
import qualified Data.Bits
 
main = do
  putStrLn $ ffffff
 
-- ffffff = "abc!"
ffffff = zipWith f [0..] [ 0x41F6, 0x41F0, 0x41EE, 0x41AF ]
  where
    f wlyxp wflco = let rhsfn0 = wflco
                        rhsfn1 = rhsfn0 + wlyxp
                        rhsfn2 = rhsfn1 `Data.Bits.xor` 0x531D
                        rhsfn3 = rhsfn2 - 0xC028
                        rhsfn4 = rhsfn3 + wlyxp
                        rhsfn5 = rhsfn4 `Data.Bits.xor` 0x1851
                        rhsfn6 = rhsfn5 + wlyxp
                        rhsfn7 = rhsfn6 - wlyxp
                        rhsfn8 = rhsfn7 `Data.Bits.xor` wlyxp
                        rhsfn9 = Data.Bits.complement rhsfn8
                        rhsfn10 = rhsfn9 + 0x6B0A
                        rhsfn11 = rhsfn10 + wlyxp
                        rhsfn12 = rhsfn11 `Data.Bits.xor` 0x2016
                        rhsfn13 = rhsfn12 `Data.Bits.xor` wlyxp
                    in Data.Char.chr ( Data.Bits..&. 0xFFFF)

Ideone wypluwa mi taki błąd

[1 of 1] Compiling Main             ( prog.hs, prog.o )

prog.hs:27:40:
    Couldn't match expected type `Int' with actual type `a0 -> a0'
    In the first argument of `Data.Char.chr', namely
      `(Data.Bits..&. 65535)'
    In the expression: Data.Char.chr (Data.Bits..&. 65535)
    In the expression:
      let
        rhsfn0 = wflco
        rhsfn1 = rhsfn0 + wlyxp
        rhsfn2 = rhsfn1 `Data.Bits.xor` 21277
        ....
      in Data.Char.chr (Data.Bits..&. 65535)

Jako, że moja znajomość Haskella jest znikoma może ktoś wie jak to poprawić?

0

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Sorry, dopiero teraz zauważyłem post.

Ostatnia linijka, chyba wypadła Ci nazwa zmiennej z lewej strony operatora ".&.", tzn.:

in Data.Char.chr ( rhsfn13 Data.Bits..&. 0xFFFF )

U mnie działa :P

$ ghc prog2.hs
[1 of 1] Compiling Main             ( prog2.hs, prog2.o )
Linking prog2 ...

$ ./prog2 
abc!
1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie, ciągle go za słabo znam, żeby napisać w nim coś większego. Mam go na liście języków do nauki już od jakiegoś czasu i co jakiś czas wracam, żeby przeczytać o nim co nieco :P

0

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować  
Obserwujący 0