witchcraft
witchcraft copied to clipboard
`Witchcraft.Chain.do_notation/2` intentionally ignores `chainer`
As far as I see, there are multiple places where second argument of chainer is used:
https://github.com/witchcrafters/witchcraft/blob/73e3cc6aee1a06e738a33c2aa8736ac19907ff96/lib/witchcraft/chain.ex#L410-L431
Instead >>> (Witchcraft.Chain.chain) is used.
Is it designed to be so, or it is a typo?
PS IMO it should be
def do_notation(input, chainer) do
input
|> normalize()
|> Enum.reverse()
|> Witchcraft.Foldable.left_fold(fn
continue, {:let, _, [{:=, _, [assign, value]}]} ->
quote do: unquote(value) |> (fn unquote(assign) -> unquote(continue) end).()
continue, {:<-, _, [assign, value]} ->
quote do
apply(unquote(chainer), [unquote(value), fn unquote(assign) -> unquote(continue) end])
end
continue, value ->
quote do
apply(unquote(chainer), [unquote(value), fn _ -> unquote(continue) end])
end
end)
end