Logs: freenode/#haskell
| 2020-09-22 03:21:42 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 2020-09-22 03:23:31 | → | thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
| 2020-09-22 03:24:40 | → | adamwespiser joins (~adam_wesp@209.6.42.110) |
| 2020-09-22 03:25:12 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 2020-09-22 03:28:22 | × | thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 2020-09-22 03:35:21 | × | dirediresalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection) |
| 2020-09-22 03:35:46 | → | dirediresalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
| 2020-09-22 03:37:44 | × | reppertj quits (~textual@pool-96-246-209-59.nycmny.fios.verizon.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 2020-09-22 03:40:44 | → | fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net) |
| 2020-09-22 03:41:30 | × | zacts quits (~zacts@dragora/developer/zacts) (Ping timeout: 272 seconds) |
| 2020-09-22 03:41:30 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
| 2020-09-22 03:42:24 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 2020-09-22 03:46:52 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 2020-09-22 03:47:36 | × | DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
| 2020-09-22 03:47:43 | × | gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 272 seconds) |
| 2020-09-22 03:49:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2020-09-22 03:50:26 | → | abhixec joins (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) |
| 2020-09-22 03:50:29 | → | DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
| 2020-09-22 03:54:35 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 2020-09-22 03:54:37 | × | flex14 quits (~flex14@2601:280:c780:7ea0:d233:9ddf:c010:c113) (Ping timeout: 260 seconds) |
| 2020-09-22 03:54:52 | → | macrover joins (~macrover@ip70-189-231-35.lv.lv.cox.net) |
| 2020-09-22 03:55:18 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:25d0:9c91:85b6:2191) (Ping timeout: 246 seconds) |
| 2020-09-22 03:55:57 | × | Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds) |
| 2020-09-22 04:00:32 | <edwardk> | i now have managed to figure out how to take the library of singleton types i have, build a category of arrows that take Sing a -> Sing b , show that is really SingI a => Sing b and has composition, where the kinds act as a sort of fiber over the terms in the language. Then I can build a category -># of the fibers, basically indexed by the kinds of the arguments in the polykinded category of functions between singletons (which |
| 2020-09-22 04:00:32 | <edwardk> | acts like the constraints package on steroids) and get all haskell functions |
| 2020-09-22 04:01:10 | → | sepi joins (49dc4892@c-73-220-72-146.hsd1.ca.comcast.net) |
| 2020-09-22 04:01:39 | <edwardk> | now I want to clean up the presentation to make it clearer that the latter category of finers where arrows from i -> j are (forall (a::i). (Sing a -> Some (Sing @j)) are themselves describable |
| 2020-09-22 04:01:44 | <edwardk> | er fibers |
| 2020-09-22 04:01:47 | × | DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
| 2020-09-22 04:02:25 | <edwardk> | which then recovers richard's work in the singletons library, but with my own weird spin |
| 2020-09-22 04:02:58 | hackage | flink-statefulfun 0.2.0.0 - Flink stateful functions SDK https://hackage.haskell.org/package/flink-statefulfun-0.2.0.0 (tdbgamer) |
| 2020-09-22 04:03:11 | → | palancovich99 joins (~ranc199@2800:a4:17ce:600:bdde:ea99:e9ec:7574) |
| 2020-09-22 04:03:57 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:1d6:8b82:83b6:a62b) |
| 2020-09-22 04:05:51 | <edwardk> | i guess what i really need is singletons for 'Some f' |
| 2020-09-22 04:05:53 | → | sand_dull joins (~theuser@62.182.99.37) |
| 2020-09-22 04:06:11 | × | unlink2 quits (~unlink2@p200300ebcf25bd0068eb9d9c94da2a17.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 2020-09-22 04:06:22 | <MarcelineVQ> | Sounds like you're having fun |
| 2020-09-22 04:06:30 | → | unlink2 joins (~unlink2@p200300ebcf25bd0068eb9d9c94da2a17.dip0.t-ipconnect.de) |
| 2020-09-22 04:06:35 | <edwardk> | generally, yes =) |
| 2020-09-22 04:07:08 | <edwardk> | i have one bottleneck with my current approach |
| 2020-09-22 04:07:28 | × | palancovich99 quits (~ranc199@2800:a4:17ce:600:bdde:ea99:e9ec:7574) (Quit: Leaving) |
| 2020-09-22 04:07:38 | → | machinedgod joins (~machinedg@d67-193-126-196.home3.cgocable.net) |
| 2020-09-22 04:07:47 | <edwardk> | i'd like to take types of kind (i -> j) and treat them at the value level as i do types of kind Type, which is as typereps for Type, here i'd want them to be typereps for types of kind (i -> j) |
| 2020-09-22 04:07:50 | → | DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
| 2020-09-22 04:08:44 | <edwardk> | but my reflection does 'on the nose' translations from types to terms, and that would mean that fromSing :: Sing (Maybe :: Type -> Type) -> Type -> Type |
| 2020-09-22 04:08:50 | <edwardk> | hrmm, maybe that checks out |
| 2020-09-22 04:09:26 | <edwardk> | except now i need to figure out what higher order functions look like |
| 2020-09-22 04:10:39 | <sepi> | https://dpaste.org/AbtT currently trying to move onto the next element if there is no "match", [] is a placeholder, a little stuck, Any tips? |
| 2020-09-22 04:10:51 | → | day_ joins (~Unknown@unaffiliated/day) |
| 2020-09-22 04:10:57 | × | polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 260 seconds) |
| 2020-09-22 04:12:05 | <edwardk> | But I need to be able to represent singletons for kind (i -> Type) at the least to make headway on talking about Some f in general, or Some (Sing @k) -- in particular |
| 2020-09-22 04:12:31 | <edwardk> | i have two existing types that look like Some x for different choices of x now. Constraint looks like Some Dict, and Type looks like Some TypeRep |
| 2020-09-22 04:12:59 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 2020-09-22 04:13:40 | <edwardk> | so this does seem to indicate what a singleton looks like here |
| 2020-09-22 04:13:53 | <edwardk> | Sing (a :: Type) ~ TypeRep (a :: Type) |
| 2020-09-22 04:14:07 | <edwardk> | Sing (a :: Constraint) ~ Dict (a :: Constraint) |
| 2020-09-22 04:14:26 | × | day quits (~Unknown@unaffiliated/day) (Ping timeout: 260 seconds) |
| 2020-09-22 04:14:26 | day_ | is now known as day |
| 2020-09-22 04:14:27 | × | dolio quits (~dolio@haskell/developer/dolio) (Quit: ZNC 1.8.1 - https://znc.in) |
| 2020-09-22 04:15:10 | × | spew quits (uid195861@gateway/web/irccloud.com/x-qrcclbtlqeexxgus) (Quit: Connection closed for inactivity) |
| 2020-09-22 04:15:14 | → | shafox joins (~shafox@106.51.234.111) |
| 2020-09-22 04:15:33 | <edwardk> | but i want to be able to talk about Sing (Eq :: Type -> Constraint) or Sing (Maybe :: Type -> Type) |
| 2020-09-22 04:18:21 | → | dolio joins (~dolio@haskell/developer/dolio) |
| 2020-09-22 04:18:28 | × | dolio quits (~dolio@haskell/developer/dolio) (Remote host closed the connection) |
| 2020-09-22 04:18:38 | × | sleblanc quits (~sleblanc@unaffiliated/sebleblanc) (Ping timeout: 260 seconds) |
| 2020-09-22 04:18:49 | <MarcelineVQ> | Any particular goal with being able to have constraints there? |
| 2020-09-22 04:18:54 | Axman6 | stocks up on non-perishable food and supplies in case edwardk unlocks something truly disasterous for the planet |
| 2020-09-22 04:19:04 | <edwardk> | ok, so the problem with the type rep story is i can compare TypeRep (a :: Type -> Type) for equality with another TypeRep (a :: Type -> Type) -- but i can't do that with the Type -> Type encoding |
| 2020-09-22 04:19:07 | <edwardk> | yes! |
| 2020-09-22 04:19:14 | <edwardk> | this makes Sing become Dict |
| 2020-09-22 04:19:23 | <Axman6> | see, he's a madman |
| 2020-09-22 04:19:34 | <edwardk> | just like TypeRep for Type makes Sing become TypeRep |
| 2020-09-22 04:19:55 | <edwardk> | and making Nat ~ Natural lets me not have to change types between types/terms and can make round tripping through singletons O(1) not O(n) |
| 2020-09-22 04:20:06 | <edwardk> | each one of these extends the space of operations i can do in constant time |
| 2020-09-22 04:20:21 | <edwardk> | but since constraints are thin, they go into Sing |
| 2020-09-22 04:20:23 | → | dolio joins (~dolio@haskell/developer/dolio) |
| 2020-09-22 04:20:25 | <edwardk> | so does p :- q |
| 2020-09-22 04:20:28 | <edwardk> | that has a singleton type |
| 2020-09-22 04:20:29 | × | dolio quits (~dolio@haskell/developer/dolio) (Remote host closed the connection) |
| 2020-09-22 04:20:53 | <edwardk> | so the arrows between singletons _also_ has a singleton type, because you can view them as SingI p :- SingI q |
| 2020-09-22 04:20:59 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2020-09-22 04:21:13 | <edwardk> | so any function that acts on some singleton to build another passes the test |
| 2020-09-22 04:21:33 | <edwardk> | so we get one category that generalizes Constraint, but which can also be used to tear apart terms |
| 2020-09-22 04:21:42 | <edwardk> | and then i can look at all the fibers over it at kind Type, and we recover Hask |
| 2020-09-22 04:22:12 | <edwardk> | and the way that => works, because we can view the left hand side of => and just Sing.. using the same vocabulary we do |
| 2020-09-22 04:22:25 | <edwardk> | which motivates core treating constraints as thin, but still using them like types |
| 2020-09-22 04:22:37 | <edwardk> | its just missing a layer of singleton type conversions to keep it sound |
| 2020-09-22 04:23:35 | → | dolio joins (~dolio@haskell/developer/dolio) |
| 2020-09-22 04:23:37 | <edwardk> | but i can only get away with my sort of 'homoiconic' Sing representation that has no overhead so long as all my types hold on the nose |
| 2020-09-22 04:23:55 | <edwardk> | it works great right up til this need to lower terms of kind (i -> j) |
| 2020-09-22 04:24:21 | <edwardk> | but I could get away there with a Demoted typeclass |
| 2020-09-22 04:24:25 | <edwardk> | er |
| 2020-09-22 04:24:27 | <edwardk> | type family |
| 2020-09-22 04:24:33 | <edwardk> | just like is used in singletons |
| 2020-09-22 04:24:44 | <edwardk> | but then it'll infect everything else i write |
| 2020-09-22 04:25:33 | <MarcelineVQ> | What does thin used here mean? without inhabitants? |
| 2020-09-22 04:25:34 | <edwardk> | basically type inference for the whole types lib goes to hell |
| 2020-09-22 04:25:46 | <edwardk> | a thin category is one where between any two objects there is at most one arrow |
| 2020-09-22 04:26:01 | <edwardk> | the category of constraints is thin (ignoring ImplicitParam fuckery) |
| 2020-09-22 04:26:11 | <edwardk> | any partial order is thin viewed as -> = (<=) |
All times are in UTC.