SORU
27 Mart 2014, PERŞEMBE


Neden Haskell&; 7e7" "okumak için açılamıyor ama&; 7a7" okumak" mümkün.

Bunu deneyin:

Prelude> reads "7a7" :: [(Int, String)]
[(7,"a7")]

Prelude> reads "7e7" :: [(Int, String)]
[]

Ortada olası tüm karakterler için bu test. Onlar 'e' hariç. Int için soruyorum çünkü eğer Haskell bilimsel gösterim sayısı yorumlamaya çalışır gibi görünüyor, ama değil.

Bana bir hata gibi görünüyor.

CEVAP
27 Mart 2014, PERŞEMBE


DZD gerçekten adamcağız. Numeric.readSigned uygulaması aşağıdakileri kullanır:

read'' r = do
    (str,s) <- lex r
    (n,"")  <- readPos str
    return (n,s)

lex arama herhangi bir lexeme ayrıştırmak için çalışacağız, ve bu" [("7e7", "")], çünkü "7e7" kayan nokta değişmez. bütün bir lexeme mı verir "7e7 için anlamına gelir Sonra çalışır bir tam ayrıştırmak readPos, Bu durumda bir değişken için hangi Numeric.readDec geçti readDec verim, düzgün, [(7, "e7")] dizesi "7e7". (n, "") karşı desen eşleştirme başarısız olur ve [] olarak bulur.

Bendüşünüyorumaşağıdaki gibi basit olmalıdır

read'' = readPos

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • newreleaseblitz

    newreleasebl

    13 Ocak 2010
  • NextGenWindows

    NextGenWindo

    8 Kasım 2011
  • Study with Substance P

    Study with S

    31 Mayıs 2008