2011-09-27 24 views
7

Bazı ev ödevlerini yapmak için Notepad ++ ve WinGHCi kullanıyorum ve biraz "veritabanı" tanımladım. Biçim keyfi ve yanlış olduğumu düşünmüyorum. Neyse, işte ben * .hs dosyasında kullanıyorum ne: a1.hs: 118: 1: Hatayı ayrıştırmak (muhtemelen yanlış girinti)İzin verme .hs dosyasını kullanma

ben karıştırmasını çalıştı

let studentDB = [ 
       ("sally", ["cpsc110", "cpsc312", "cpsc204"]), 
       ("jim",  ["cpsc110", "cpsc313"]), 
       ("bob",  ["cpsc121", "cpsc303", "cpsc212"]), 
       ("frank", ["cpsc110", "cpsc212", "cpsc204"]), 
       ("billy", ["cpsc312", "cpsc236"]), 
       ("jane", ["cpsc121"]), 
       ("larry", ["cpsc411", "cpsc236"]) ] 

WinGHCi bana bu hata veriyor tupleların üst üste dizilmesi veya liste listemlerini farklı hatlara yerleştirmek ancak işe yaramayacak bir şey elde edemedim. Daha küçük bir şey, hatayı takip etmeme yardımcı olacağını düşündüm, bu yüzden bunu yerine getirdim:

let s = [] 

Fakat bu bana aynı hatayı verdi. Bu, bazı ilginç Notepad ++ davranışından kaynaklanan bir girinti hatası mı? Yoksa benim Haskell'im yanlış mı? Teşekkürler.

cevap

14

Bir. .hs dosyasının içeriğinin, ghci'ye yazabildiğiniz gibi olduğunu sanıyorsunuz. Bu yanlış. Ghci yazarken, do satırına etkili yazıyorsunuz. Yani aşağıdaki sözdizimi doğrudur:

main = do 
    let s = [] 
    -- do more stuff 

Ancak, * .hs dosyanın üst düzeyinde, durum farklı. let yapı sadece aradığım Tam olarak ne

s = [] 
+1

demek, aslında

Eğer bağlayıcı bir üst düzey tanımlamak istiyorsanız

let s = [] in codeThatReferencesS 
, teşekkür ederim! – user966249

İlgili konular