Haskell'i yeni öğrenmeye başladım. score x
'un en yüksek değere sahip olduğu bir listede x bulmaya çalışıyorum. Çalıştığım snd (maximum [(score x, x) | x <- codes])
'u denedim, ancak hem işlevi hem de değeri saklamaksızın bunu yapmanın daha hızlı bir yolu olup olmadığını merak ediyordum.Haskell: f (x) 'nin maksimum olduğu listede x
Önerileriniz için teşekkürler!
Haskell ve GHC çalışma şekilleri - "saklanan" puanlar konusunda endişelenmeyin, olmayacaklar. Örneğin, derlenmiş program 'main = print (maksimum [(2 x x, x) | x <- [1..100000000000] :: [Int]])' koşmak için yaklaşık 10-15 dakika sürebilir ancak böylece küçük, sabit bellekte, derleyici cevabı almak için ne kodların ne de puanların tutulması gerektiğini belirleyecektir. –
Herhangi bir kod aynı puana sahipse, bunların maksimum kodu seçerek aralarında seçim yapılacağını unutmayın, ancak 'Ord' bu tür için tanımlanmıştır. Bu senin istediğin gibi olabilir ya da olmayabilir. – Carl
'snd. maksimumBy (fst ile karşılaştırarak). map (score &&& id) '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'works works works works works works works works works works works works works works works works works works works works works works works works –