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

  • After Effects Tutorials w/ Mikey

    After Effect

    24 HAZİRAN 2009
  • Influencer Plus

    Influencer P

    2 Ocak 2013
  • MrChiCity3

    MrChiCity3

    14 NİSAN 2008