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

  • Best Quality Cartoons

    Best Quality

    10 ŞUBAT 2014
  • emimusic

    emimusic

    10 Mart 2006
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008