Просто начав работу в Haskell, и я пытаюсь найти лучший способ назначить несколько переменных на основе одного условия. До сих пор я только что упаковывал и распаковывал кортежи. Есть ли лучший/более идиоматический способ?Назначение нескольких переменных в Haskell
(var1, var2, var3) =
if foo > 0
then ("Foo", "Bar", 3)
else ("Bar", "Baz", 1)
Также интересуется стоимостью упаковки и распаковкой кортежей. Если я правильно читаю this, похоже, что это оптимизируется в функциях, но не уверен, что так происходит с назначением.
Вы также можете использовать списки, просто чтобы вы знали. Вы даже можете сопоставить его в больших кусках, используя '(a: b: c: rest) = [1,2,3,4,5,6]' где 'a = 1',' b = 2', 'c = 3' и 'rest = [4,5,6]'. Кроме того, это необходимо только в операциях 'let' и' where', а не в уровне базового выражения. – AJFarmar
Поскольку у нас нет переменных _mutable_ в Haskell, мы называем эти «привязки» или «определения», а не «присваивания». Ваш код выглядит хорошо, и я не буду беспокоиться о стоимости, если на него не будут указаны профилирующие очки. Кроме того, если вы беспокоитесь об этом кортеже, вы не хотите знать, как '' Bar "' фактически отображается во время выполнения ... ;-) – chi