У меня есть тип данных, как это:Строительные данные с логикой
data FooBar =
FooBar { foo :: Double
, bar :: Double
, ter :: Double
}
-- hypothetical builder with some random logic
mkFooBar :: Double -> Double -> FooBar
mkFooBar a b
| a < 5 = FooBar a b (a + b)
| a > 100 = FooBar a b (a * b)
| otherwise = FooBar (a^2) (b^2) ((a + b) ^2)
и некоторые предопределенные значения, используемые по программе, как:
fBLess5 = mkFooBar 1 200
fBMore100 = mkFooBar 200 200
fBSquared = mkFooBar 50 200
-- and so on
нормально ли это здание предопределенные значения, как, что в Haskell? Если fBLess5
используется N раз по программе, он будет построен N раз, если он написан таким образом?
ОК спасибо, поэтому я не писал никакого богохульства :) или «плохой практики» для этого конкретного случая, не так ли? – Randomize
@Randomize Нет, я не вижу проблемы с вашим кодом. – melpomene
@Randomize Нет, используя привязки верхнего уровня для вещей, которые должны вычисляться только один раз, довольно идиоматично. – chi