SORU
22 HAZİRAN 2010, Salı


Nasıl GHCi kullanırken işlevler için açık tür bildirimleri sağlamak için?

Nasıl ben bu işlevi eşdeğer tanımlamak için (learnyouahaskell alınan) içinde GHCi?

import Data.List  

numUniques :: (Eq a) => [a] -> Int  
numUniques = length . nub  

Tip bildirimi olmadan, GHCi fonksiyon tanımını kabul eder, ama hiçbir işe yaramayan bir tür ile sona erer

Prelude Data.List> import Data.List 
Prelude Data.List> let numUniques' = length . nub
Prelude Data.List> :t numUniques'
numUniques' :: [()] -> Int

Elde edilen fonksiyonu sadece bir parametre olarak birimler listesini kabul eder.

Bir şekilde orada GHCi yazın tanımlamalar sağlamak. Yoksa tür bildirimleri gerektirmeyen bu gibi fonksiyonları tanımlamak için başka bir yol var mı?

GHCi Kılavuzu'nda belirgin bir ipucu gördüm, ve aşağıdaki gibi ifadeler ile (boşuna) tecrübe:

> let numUniques' = ((length . nub) :: (Eq a) => [a] -> Int)
> :t numUniques'
numUniques' :: [()] -> Int

CEVAP
22 HAZİRAN 2010, Salı


Bir şekilde orada GHCi yazın tanımlamalar sağlamak.

let numUniques' :: (Eq a) => [a] -> Int; numUniques' = length . nub

Yoksa tür bildirimleri gerektirmeyen bu gibi fonksiyonları tanımlamak için başka bir yol var mı?

Kapalı -XNoMonomorphismRestriction ile monomorphism kısıtlama açarsanız sağ türünü anlaması olacaktır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • Associated Press

    Associated P

    18 EYLÜL 2006
  • Deany Boii

    Deany Boii

    27 Kasım 2007