This works:
let pb =
[
("a", stack[n (scale "phrygian" "0 [~ 3] . 8 5 4 . 4 -1 2 0") # s "superpiano"]),
("b", stack[n (scale "phrygian" "0 [3] . 5 8 4 . 4 -3 2 0") # s "superpiano"])
]
in
d7 $ ur 4 "a b a a" pb []
while this does not :
let pb =
[
("a", stack[n (scale "phrygian" "0 [~ 3] . 8 5 4 . 4 -1 2 0") # s "superpiano"]),
("b", stack[n (scale "phrygian" "0 [3] . 5 8 4 . 4 -3 2 0") # s "superpiano"])
]
in
d7 $ ur 4 "a b a a" pb []
Problem is, in my editor (VSCode), when I do a CR, it gives me the second version.
Does haskell expect 2 spaces indent instead of 4 and that might be the cause of the problem ?
You can use let to define more than one thing:
let a = 3
b = 4
c = 5
The variable names must line up, so this is an error:
let a = 3
b = 4
c = 5
A definition can go over one line, so this is ok:
let a =
3
b = 4
c = 5
However the second line must be indented further than the variable that's being defined. So this is OK:
let a =
3
b = 4
c = 5
But this isn't:
let a =
3
b = 4
c = 5
Neither is this:
let a =
3
b = 4
c = 5
So that's the problem with your second example - the [
and ]
are on the same level at the thing that's being defined, and needs to be somewhere to the right of it.
Ok, thanks. I am not sure I would go to the extent to say that it makes sense but at least I know the reason now. What's the most annoying is that the IDE is not aware of that ... Does this happens in Atom too ?
This is a good point, does anyone know how to set indentation rules for common editors specifically for tidal cycles?
It might be worth checking a haskell vscode plugin, see if that does better. If so maybe the behaviour could be brought across to the tidal plugin.
The emacs tidal plugin that I often use is based on top of the haskell one and is syntax-aware and gets the indentation mostly right