lists.tlug.jp
has at least one link to it.
.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.txt
blocking it and password protection.
robots.txt
, but unfortunately we can't get password protection there without a paid account.
lists.tlug.jp-scrape
repo (which maybe we would want to rename) and serving that from Netlify is something I can help with.
Here goes
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYMmJnZfmZ2hmG+uN7JbTdHzLlUu10eMK9RuZok7Z0RAEvPTYJbBR+cRQmKZ+TmCXrXMoVFQflFTVNYrCl5POimzlqapjrl//SnCuJzHSnhrClzQ2hhxjjYj5NOsA38fXl0S0sdGjpuEFGd6v1QJ0id4sEnuTBKxKg++nneAtOBpa9X4KOxSgaWFaKUPsq3KrHx2uzQ6ng10N2/WYop6JA7VG2IDPdcA7aJFMmW+ykPuQjL4atsh4A+76C3oBrei92ZUUC3aelqL0gF3xh+JjDiQRmaFiGRAGspHXwPQjxP8xmLHU+pYNZ9Ylfv3vRi4Ue+0AlqFQYyvnZ7/1F2V9F ragga@walkonen.local
@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
<*
and *>
, too, I think; those seem pretty simple. But the type signature (<$) :: a -> f b -> f a
isn'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.