.gitignore. I don't know what we have in the way of a backup for it, beyond a branch on home desktop machine that's not been pushed anywhere.
tlug-admin! That part of the site is not indexed by search engines, due to both
robots.txtblocking it and password protection.
robots.txt, but unfortunately we can't get password protection there without a paid account.
lists.tlug.jp-scraperepo (which maybe we would want to rename) and serving that from Netlify is something I can help with.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYMmJnZfmZ2hmG+uN7JbTdHzLlUu10eMK9RuZok7Z0RAEvPTYJbBR+cRQmKZ+TmCXrXMoVFQflFTVNYrCl5POimzlqapjrl//SnCuJzHSnhrClzQ2hhxjjYj5NOsA38fXl0S0sdGjpuEFGd6v1QJ0id4sEnuTBKxKg++nneAtOBpa9X4KOxSgaWFaKUPsq3KrHx2uzQ6ng10N2/WYop6JA7VG2IDPdcA7aJFMmW+ykPuQjL4atsh4A+76C3oBrei92ZUUC3aelqL0gF3xh+JjDiQRmaFiGRAGspHXwPQjxP8xmLHU+pYNZ9Ylfv3vRi4Ue+0AlqFQYyvnZ7/1F2V9F email@example.com
@sssjjjnnn Just looking through your parser code; I think you really wanted
Either instead of
Maybe for handling errors. The convention is that
Left is an error and
Right is a value with which to continue, and the monad definition encodes this similar to
Monad Maybe, by abandoning processing and letting the
Left value propagate through to the end when an error occurs:
instance Monad (Either e) where Left l >>= _ = Left l Right r >>= k = k r
I'm not sure off-hand what the exact type should be, but probably something like
Either (String, ParserState) (a, ParserState),
String being the error message, because the
ParserState will contain the position where the error occurred and we can print that. (Probably we also want to keep line and maybe column number in the state.)
<$. So I guess I'd better go read up on and figure that out, and maybe complete my little explicatory monadic parser. I have the feeling with yours you've got too many functions touching and extracting the state, rather than leaving that only to the lowest-level combinators.
function <$> arg1 <*> arg2 <*> arg3
function <$ drop_this_arg <*> arg1 <*> arg2
func <$> arg1 <* drop_this_arg <*> arg2
*>, too, I think; those seem pretty simple. But the type signature
(<$) :: a -> f b -> f aisn't obvious to me, and from what you've said here and elsewhere I think I'm missing an intuition about the relationship between Appicative and Functors. I'll go back and spend an hour on it and I'm sure it will all come clear.
btype in the above is completely unused! (I just had to think for a moment about what
fmap . constdoes.)