birdgoose has quit [Read error: Connection reset by peer]
pfharlock has quit [Remote host closed the connection]
pfharlock has joined #ocaml
gravicappa has joined #ocaml
chrisz has quit [Ping timeout: 276 seconds]
chrisz has joined #ocaml
gravicappa has quit [Ping timeout: 250 seconds]
olle has joined #ocaml
azimut has quit [Ping timeout: 240 seconds]
gravicappa has joined #ocaml
pfharlock has quit [Remote host closed the connection]
kaph has joined #ocaml
bartholin has joined #ocaml
<d_bot>
<kirubel> HI EVERYONE
<d_bot>
<kirubel> I HAVE A FEW QUESTION IF ANY OF YOU CAN HELP IT WOULD BE HELPFUL
<bartholin>
WAT
<olle>
Fuck that
<d_bot>
<kirubel> I WAS LOOKING TO LAUNCH A WEBSITE FOR CHARITY BUT I DONT HAVE ANY KNOWLEDGE ON HOW TO DO A WEBSITE SO I WAS LOOKING ON THE WEB AND I FOUND A TEMPLATE BUT THEY SAID THEY ITS ONLY HTML CAN YOU GIVE ME INSIGHT ON HOW I CAN DO THIS ?
<d_bot>
<NULL> Please don't shout
<d_bot>
<Bluddy> Please don't write in all-caps. That's considered shouting.
<d_bot>
<kirubel> am really sorry
<d_bot>
<kirubel> i apologize
<d_bot>
<octachron> And this subject is mostly off-topic for this server. Except if you want to use an OCaml webserver.
<d_bot>
<Patate> Wait... ocaml is not html?
<d_bot>
<Patate> damn
<d_bot>
<kirubel> would you recommend to other server that could give me ideas please
<d_bot>
<Patate> @kirubel are you prepared to spend loooots of time on this?
<d_bot>
<Patate> Doing a website is not a simple task if you are not familiar with it (I might be wrong)
<d_bot>
<kirubel> yea i am
<d_bot>
<kirubel> am ready
<d_bot>
<kirubel> it should be a simple website because its a charity website its like a few pages
<olle>
static page generator like jekyll
<olle>
If the page content doesn't change too much
<olle>
If it does, then Wordpress
<d_bot>
<Bluddy> wix is also a good option. it lets you design sites fairly easily
mbuf has joined #ocaml
adanwan has quit [Ping timeout: 240 seconds]
adanwan_ has joined #ocaml
adanwan_ has quit [Remote host closed the connection]
adanwan has joined #ocaml
<d_bot>
<Patate> he is using wix (we continued on PM as it is not related to ocaml)
wingsorc has quit [Ping timeout: 240 seconds]
jpds1 has joined #ocaml
jpds has quit [Ping timeout: 240 seconds]
pfharlock has joined #ocaml
jpds2 has joined #ocaml
jpds1 has quit [Ping timeout: 240 seconds]
bartholin has quit [Ping timeout: 248 seconds]
bartholin has joined #ocaml
pfharlock has quit [Remote host closed the connection]
pfharlock has joined #ocaml
jpds2 is now known as jpsa
jpsa is now known as jpds
Haudegen has quit [Quit: Bin weg.]
szkl has joined #ocaml
b0o has quit [Remote host closed the connection]
sm2n has quit [Remote host closed the connection]
immutable has quit [Remote host closed the connection]
seeg has quit [Remote host closed the connection]
philipwhite has quit [Remote host closed the connection]
sleepydog has quit [Read error: Connection reset by peer]
jakzale has quit [Remote host closed the connection]
philipwhite has joined #ocaml
sleepydog has joined #ocaml
jakzale has joined #ocaml
sm2n has joined #ocaml
seeg has joined #ocaml
b0o has joined #ocaml
immutable has joined #ocaml
Haudegen has joined #ocaml
Sankalp has quit [Ping timeout: 256 seconds]
jpds has quit [Remote host closed the connection]
jpds has joined #ocaml
gereedy has joined #ocaml
Sankalp has joined #ocaml
tiferrei has quit [Remote host closed the connection]
tiferrei has joined #ocaml
mro has joined #ocaml
mro has quit [Remote host closed the connection]
waleee has joined #ocaml
<ns12>
kirubel: How in the world did you find this IRC channel?
<d_bot>
<NULL> If you're talking about kirubel, they came from Discord
<d_bot>
<NULL> How did I miss the "kirubel:" part ?
<d_bot>
<Ambika E.> If it's a static site it can actually be pretty quick, which is nice
gravicappa has quit [Ping timeout: 240 seconds]
<ns12>
Just embed the whole static website as OCaml code (e.g. TyXML) and write to files. No need for Jekyll.
mro has joined #ocaml
mro has quit [Remote host closed the connection]
spip has joined #ocaml
bobo has quit [Ping timeout: 256 seconds]
bartholin has quit [Quit: Leaving]
zebrag has joined #ocaml
rgrinberg has joined #ocaml
mro has joined #ocaml
rgrinberg has quit [Read error: Connection reset by peer]
mro has quit [Remote host closed the connection]
mro has joined #ocaml
mbuf has quit [Quit: Leaving]
<d_bot>
<Patate> Quick if you know how to write it... If you have to learn, not that much ^^
<d_bot>
<Ambika E.> Even if you have to learn
<d_bot>
<Ambika E.> I think it's just one of those things where you can follow a tutorial then change the contents a little and have exactly what you want
<d_bot>
<Ambika E.> Instead of this theme choose that theme and instead of these words insert your own
<d_bot>
<Ambika E.> I'm talking about using static site generators here not writing raw html and css
Haudegen has quit [Quit: Bin weg.]
<sleepydog>
just register a domain name and put a phone number on the whois record, and you will get plenty of people offering to build you a website for a small price :)
mro has quit [Quit: Leaving...]
<d_bot>
<Patate> Oh! yeah ok, was thinking of raw
<d_bot>
<Ambika E.> Ehehe
<d_bot>
<Ambika E.> Raw is a pain for anyone tbh, lots of copy pasting
gravicappa has joined #ocaml
Haudegen has joined #ocaml
Anarchos has joined #ocaml
Anarchos has quit [Client Quit]
azimut has joined #ocaml
azimut has quit [Remote host closed the connection]
azimut has joined #ocaml
aspe has joined #ocaml
aspe has quit [Client Quit]
ns12 has quit [Quit: bye]
ns12 has joined #ocaml
<kronicma1>
Does anyone know of a good parser combinator library that supports Unicode?
aspe has joined #ocaml
aspe has quit [Quit: aspe]
dhil has joined #ocaml
imode has quit [Quit: Help, I'm stuck in a server factory!]
imode has joined #ocaml
imode has quit [Client Quit]
olle has quit [Ping timeout: 256 seconds]
<d_bot>
<anmonteiro> is there a function somewhere in compiler libs to convert a Types.signature_item to a Parsetree.signature_item?
<d_bot>
<anmonteiro> oh maybe `Untypeast` is what I want
<d_bot>
<anmonteiro> `Untypeast` takes a `Typedtree.signature_item` 🤔
vicfred has quit [Quit: Leaving]
aspe has joined #ocaml
gravicappa has quit [Ping timeout: 248 seconds]
Tuplanolla has joined #ocaml
wingsorc has joined #ocaml
wingsorc has quit [Ping timeout: 252 seconds]
aspe has quit [Quit: aspe]
aspe has joined #ocaml
xgqt has quit [Ping timeout: 250 seconds]
zebrag has quit [Ping timeout: 240 seconds]
xgqt has joined #ocaml
zebrag has joined #ocaml
wingsorc has joined #ocaml
aspe has quit [Quit: aspe]
ski has quit [Quit: Lost terminal]
szkl has quit [Quit: Connection closed for inactivity]
<d_bot>
<mbacarella> you are using code that makes very heavy use of functors. your code instantiates a bunch of functors.
<d_bot>
<mbacarella> you have a competing body of code that doesn't use the functors at all.
<d_bot>
<mbacarella> when discussing them, what do you call the body of code that instantiates the functors? "the functorized code?" or "the functorialized code"?
tiferrei has quit [Ping timeout: 240 seconds]
Haudegen has quit [Ping timeout: 248 seconds]
tiferrei has joined #ocaml
tiferrei has quit [Ping timeout: 240 seconds]
hyphen has joined #ocaml
<hyphen>
hey q: what stops OCaml from propagating refutations in `match`?
<d_bot>
<NULL> "refutations" ?
<hyphen>
e.g. match x with None -> 0 | _ -> let Some y = x in y
tiferrei has joined #ocaml
<hyphen>
does not throw a warning
<hyphen>
because in the second branch x cannot be anything but Some
<hyphen>
it could be one of those problems that appears easy on the surface but is actually NP-something-something for all i know
<d_bot>
<NULL> If you consider that all the typechecker has and checks is types, `x` still has type `int option`. How would you represent the information you have at this point ?
<d_bot>
<NULL> Something that could be possible is type a = [ `A | `B of int ] let f : a -> int = function `A -> 0 | x -> let `B y = x in y
<hyphen>
ik it's still of type option, this isn't something new to match compilation tho. OCaml does a variation of that kind of branch elimination already
<hyphen>
e.g.
<d_bot>
<NULL> Since you could store that `x` has type [ `B of int ] at that point
<hyphen>
`type void = | let x : ('a, void) Either.t -> 'a = fun (Left x) -> x`
<hyphen>
would compile without warnings
<hyphen>
because you can't construct Right
<d_bot>
<NULL> It only does these checks in a local way
<hyphen>
even though it's Either.t
spip has quit [Ping timeout: 240 seconds]
spip has joined #ocaml
<d_bot>
<NULL> It checks that all possibilities are accounted, and if some aren't it checks whether they are impossible from the type information only
<d_bot>
<NULL> So that's why the "not None" info would have to be stored in x's "type"
<hyphen>
hmm
<hyphen>
pretty sure you _can_ do it transparently tho
<hyphen>
within the match compiler itself
<d_bot>
<NULL> "transparently" in what sense ?
<hyphen>
without showing the info in the (user-facing) type system
<d_bot>
<NULL> How do you store it still ? I put "type" in quotation partly because you may not want it to be user-accessible, but you still need a way to track things
<hyphen>
like there are pieces of info the type checker knows internally but doesn't expos
dhil has quit [Ping timeout: 240 seconds]
<d_bot>
<NULL> Polymorphic variants do it through theit types
<d_bot>
<NULL> their*
<d_bot>
<NULL> What are you thinking about ? I don't see anything
tiferrei has quit [Ping timeout: 240 seconds]
<hyphen>
ik you're implying some form of structural typing to track that info but i don't think you'd need it.. this could be purely a match-compilation pass i feel
<hyphen>
idk enough to be sure tho
<d_bot>
<NULL> What do you mean by "match-compilation" exactly ?
tiferrei has joined #ocaml
<hyphen>
match expr -> decision tree
<d_bot>
<NULL> Would you start translating before the full typing pass ?
<hyphen>
type x = A | B | C
<hyphen>
match v : x with A -> ... | _ -> match v with B | C -> ...
<hyphen>
this is the same as `match v with A -> ... | B | C -> ...
<d_bot>
<NULL> *could be considered
<d_bot>
<NULL> and it does the same
<d_bot>
<NULL> But what if the second match is delayed ?
jpds has quit [Ping timeout: 240 seconds]
<hyphen>
example?
<d_bot>
<NULL> match v : x with A -> 0 | v' -> let z = 0 in Fun.id (match v with B | C -> 1)
<hyphen>
idk what's the problem here, really
<hyphen>
the v being matched on can still only be B or C
<hyphen>
on that branch
<d_bot>
<NULL> Sure, but how do you propagate that information ?
<hyphen>
if I knew the details I'd be sending my PR instead of asking here :P
<d_bot>
<NULL> Or do you merge both match still ?
<hyphen>
I could merge the matches actually.. just put a hole where the second match is, and fill it for each branch
jpds has joined #ocaml
<hyphen>
match .. A .. | B | C -> let z = 0 in Fun.id HOLE
<hyphen>
then replace the hole with the match body for that value
<hyphen>
which is 1
<hyphen>
if branches differ, so do bodies
<d_bot>
<NULL> You mean you duplicate ?
<hyphen>
so | B -> 1 | C -> 2 becomes B -> let z = 0 in Fun.id 1 | C -> ... in Fun.id 2
<hyphen>
ya
<hyphen>
I can't see a way to subvert this
<hyphen>
hence my question
<d_bot>
<NULL> How do you manage nested patterns ?
<hyphen>
*shrug*
<hyphen>
someone smarter than me with this stuff probably did think about this and reach a conclusion
<hyphen>
im just curious what that conclusion would be
<d_bot>
<NULL> Code duplication is already dangerous, but I'm trying to derive such a conclusion with you
<d_bot>
<NULL> How do you detect such a second match ? You inspect the branch at every catch-all branch ?
Tuplanolla has quit [Quit: Leaving.]
<hyphen>
I assume the mechanism would be extending from the exhaustiveness checker.. Assuming the exhaustiveness checker works by treating a value as the set of all its possible variants.. (see that's the problem, i've never compiled pattern matching so idk how that works lol).. So with that assumption, whenever the exhaustiveness checker encounters a value that is destructured via current match, for each of its
<hyphen>
branches, it drops the variants that were fully matched outside of the current branch from the set of possible variants.
<hyphen>
so when the value is used again in a match, the set is smaller
<hyphen>
regardless of where that match is
<hyphen>
i don't think we'd need to flatten this way?
<hyphen>
just another way to think about it
<hyphen>
idk
<hyphen>
I'll sleep now and think about this tomorrow