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

  • Andrea Lewis

    Andrea Lewis

    14 Mart 2013
  • Living Waters

    Living Water

    9 AĞUSTOS 2006
  • modica89

    modica89

    24 HAZİRAN 2007