2024/05/07

Newest at the top

2024-05-07 15:54:15 +0200 <ski> (and you could use multiset/bag brackets, instead of set brackets, so ⌜x : ⋂ ⟅a,b⟆⌝, to emphasize non-idempotence)
2024-05-07 15:53:47 +0200 <ncf> so this seems like a restriction of linear logic to just ⊗ and ⊸, where ⊗ can only appear in domains
2024-05-07 15:53:38 +0200micro(~micro@user/micro) (Ping timeout: 268 seconds)
2024-05-07 15:53:10 +0200 <ski> er, well, i suppose ⌜⋂⌝, rather than ⌜⋀⌝, actually
2024-05-07 15:52:17 +0200 <ski> if you write ⌜x : ⋀ {a,b}⌝, that would be okay, from that POV, imho
2024-05-07 15:51:18 +0200 <Franciman> kinda strange minded, but i see it
2024-05-07 15:51:14 +0200 <Franciman> UHHHHHHHM okay
2024-05-07 15:50:59 +0200 <ski> because `x in {a,b}' is equivalent to `x = a or x = b', set-theoretically
2024-05-07 15:50:37 +0200 <Franciman> thin kabout it
2024-05-07 15:50:33 +0200 <Franciman> it's exactly the same thing
2024-05-07 15:50:30 +0200 <Franciman> why not?
2024-05-07 15:50:24 +0200skiwould really not use set notation here, since it gives misleading connotations
2024-05-07 15:49:49 +0200[Leary](~Leary]@user/Leary/x-0910699) (Ping timeout: 255 seconds)
2024-05-07 15:49:42 +0200 <Franciman> then you can deduce both t : T_1 and t : T_2
2024-05-07 15:49:34 +0200 <Franciman> but if t is a term of type {T_1, T_2}
2024-05-07 15:49:08 +0200 <Franciman> ski: depending on the framework you work on
2024-05-07 15:48:56 +0200rosco(~rosco@yp-146-6.tm.net.my)
2024-05-07 15:48:30 +0200rosco(~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
2024-05-07 15:47:51 +0200 <ncf> ha, i took a class by one of these guys (not on multi types, though)
2024-05-07 15:47:50 +0200 <ski> Franciman : are these intersection types supposed to be (or support) "ad hoc" (e.g. being able to intersect `Double' and `Int'), or only being able to take the intersection of features that each of the component types support (like e.g. intersection of fields in record types, but also applied recursively through the structure of types) ?
2024-05-07 15:47:23 +0200Lears(~Leary]@user/Leary/x-0910699)
2024-05-07 15:47:05 +0200 <Franciman> https://www.irif.fr/~kesner/papers/bucciarelli-kesner-ventura-igpl.pdf this
2024-05-07 15:47:02 +0200rvalue(~rvalue@user/rvalue)
2024-05-07 15:47:01 +0200 <Franciman> you could also enjoy
2024-05-07 15:46:55 +0200 <Franciman> yes ncf nice reference
2024-05-07 15:46:52 +0200 <tomsmeding> GHC absolutely has no native support for anything in this direction
2024-05-07 15:46:38 +0200 <tomsmeding> Franciman: I strongly suspect the best answer you're going to get here is, "if you can't find the library on the internet, it probably doesn't exist"
2024-05-07 15:46:25 +0200 <ncf> found this https://www.irif.fr/~gmanzone/ens/lambda/notes.pdf
2024-05-07 15:45:48 +0200 <tomsmeding> dminuoso: Franciman is talking about a very different type system where the "kind" (I guess) of the typing judgement is not Env -> Term -> Type but instead Env -> Term -> MultiSet Type
2024-05-07 15:45:19 +0200 <tomsmeding> and have an API that interacts with that heterogeneous list so that you can only do things that typecheck with all the types in the type-level index
2024-05-07 15:45:17 +0200 <Franciman> are yo ufamiliar with Dezani-Ciancaglini and Coppo's work?
2024-05-07 15:44:48 +0200 <tomsmeding> instead of a single value with multiple types, represent the thing as a list of n times the same value, each time with a different type
2024-05-07 15:44:30 +0200 <tomsmeding> perhaps a HList with a suitable API would do
2024-05-07 15:44:23 +0200 <dminuoso> Not entirely sure what "interpretation as multitype" even means
2024-05-07 15:44:23 +0200 <Franciman> i wonder whether we can encode all the rules
2024-05-07 15:44:14 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2024-05-07 15:44:09 +0200 <tomsmeding> you'd still have to write the machinery to interpret them as multitypes
2024-05-07 15:43:57 +0200 <tomsmeding> type-level lists are simply lists on the type level
2024-05-07 15:43:44 +0200 <dminuoso> Not sure what you mean by "characterize termination with type level lists"
2024-05-07 15:43:42 +0200 <Franciman> depending on the type system you use, you can characterize different types of terminations
2024-05-07 15:43:13 +0200 <Franciman> and can you characterize termination with type level lists?
2024-05-07 15:43:08 +0200 <dminuoso> Is that what you mean, Franciman?
2024-05-07 15:43:05 +0200 <dminuoso> '[Int, Int, Double]
2024-05-07 15:42:59 +0200 <dminuoso> Well, type-level lists are a thing.
2024-05-07 15:42:16 +0200tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 246 seconds)
2024-05-07 15:42:01 +0200 <tomsmeding> ah
2024-05-07 15:41:59 +0200 <Franciman> so more accuretely it's a multi set
2024-05-07 15:41:56 +0200 <tomsmeding> simplifying them in some magical way, perhaps?
2024-05-07 15:41:50 +0200 <Franciman> except you don't care about ordering
2024-05-07 15:41:50 +0200 <tomsmeding> what would unification do, just append the lists?