< 1611620178 789548 :Arcorann!~awych@159-196-65-46.9fc441.mel.nbn.aussiebb.net JOIN :#esoteric < 1611620525 303194 :rain1!~My_user_n@unaffiliated/rain1 QUIT :Quit: WeeChat 3.0 < 1611620648 141521 :SpaceDecEva!2fcce04e@47.204.224.78 JOIN :#esoteric < 1611620904 824631 :SpaceDecEva!2fcce04e@47.204.224.78 QUIT :Client Quit < 1611621496 999775 :TheLie!~TheLie@2a02:8106:215:3300:e7ad:5ab7:4ea0:e177 QUIT :Remote host closed the connection > 1611622346 348182 PRIVMSG #esoteric :14[[07Parse this sic14]]4 10 02https://esolangs.org/w/index.php?diff=80320&oldid=80319 5* 03Digital Hunter 5* (-226) 10/* Deadfish interpreter */ output was broken. Sigh. > 1611622615 719966 PRIVMSG #esoteric :14[[07Talk:Parse this sic14]]4 10 02https://esolangs.org/w/index.php?diff=80321&oldid=80299 5* 03Digital Hunter 5* (+359) 10 < 1611626008 275485 :user24!~user24@2a02:810a:1440:7304:5d9f:15f9:4967:c61 JOIN :#esoteric < 1611628438 327243 :user24!~user24@2a02:810a:1440:7304:5d9f:15f9:4967:c61 QUIT :Quit: We must know, we will know < 1611629578 843453 :LKoen!~LKoen@19.175.9.109.rev.sfr.net QUIT :Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.” < 1611630422 990051 :MDude!~MDude@71.50.47.112 QUIT :Quit: Going offline, see ya! (www.adiirc.com) < 1611630436 781528 :sprock!~sprocklem@unaffiliated/sprocklem QUIT :Quit: ... < 1611632359 347480 :Deewiant!~deewiant@de1.ut.deewiant.iki.fi QUIT :Ping timeout: 256 seconds < 1611632377 255172 :Deewiant!~deewiant@de1.ut.deewiant.iki.fi JOIN :#esoteric < 1611645403 180884 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :fungot, does the Great Seal of the United States, established by Queen Victoria, symbolize the secret rule of the freemason Illuminati? < 1611645403 387159 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :b_jonas: consider it forgotten. it's some strange suburb with a statue and a church in it. < 1611646536 807612 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :fungot, while an angel is incarnated for an earthly mission, they sate themselves with the same kind of mortal food as humans, right? if they can't find enough food and starve, do they die or are they merely dismissed to their original realm? or does that never happen because they can just use their power to create food out of nothing? < 1611646537 59266 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :b_jonas: 11903: what are you using for your coding?!! a pair of parentheses, all alike < 1611646979 658335 :Deewiant!~deewiant@de1.ut.deewiant.iki.fi QUIT :Ping timeout: 256 seconds < 1611647003 249358 :Deewiant!~deewiant@de1.ut.deewiant.iki.fi JOIN :#esoteric < 1611647714 785456 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :fungot, if one and a half hens lay one trench per one and a half weeks, then how many eggs can thirty soldiers dig in an hour if they only have ten shovels among them? < 1611647714 914062 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :b_jonas: last time i checked chicken is free as in " fnord". sounds uh fnord." < 1611647733 725129 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :not really an answer, but ok < 1611647813 18709 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Taneb: Did you save a bunch of kittens? < 1611648930 398992 :rain1!~My_user_n@unaffiliated/rain1 JOIN :#esoteric > 1611649043 426306 PRIVMSG #esoteric :14[[07Talk:Parse this sic14]]4 10 02https://esolangs.org/w/index.php?diff=80322&oldid=80321 5* 03JonoCode9374 5* (+240) 10/* Interpreter */ new section > 1611649097 787104 PRIVMSG #esoteric :14[[07User:JonoCode937414]]4 10 02https://esolangs.org/w/index.php?diff=80323&oldid=76638 5* 03JonoCode9374 5* (+21) 10 < 1611650878 714869 :arseniiv_!~arseniiv@136.169.229.70 JOIN :#esoteric < 1611651829 398404 :Sgeo!~Sgeo@ool-18b98aa4.dyn.optonline.net QUIT :Read error: Connection reset by peer < 1611652025 430136 :Arcorann!~awych@159-196-65-46.9fc441.mel.nbn.aussiebb.net QUIT :Ping timeout: 240 seconds < 1611654181 885952 :Arcorann!~awych@159-196-65-46.9fc441.mel.nbn.aussiebb.net JOIN :#esoteric < 1611656283 288440 :user24!~user24@2a02:810a:1440:7304:a863:6681:e17:a946 JOIN :#esoteric < 1611656366 775952 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric > 1611656388 582522 PRIVMSG #esoteric :14[[07Caballo14]]4 N10 02https://esolangs.org/w/index.php?oldid=80324 5* 03CatIsFluffy 5* (+7412) 10It's Spanish for "horse". Same starting letter since same target. > 1611656434 278753 PRIVMSG #esoteric :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=80325&oldid=80297 5* 03CatIsFluffy 5* (+14) 10/* C */ They say you're supposed to add languages here, but Special:LonelyPages tells a different story < 1611656476 593369 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 240 seconds < 1611656476 767200 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1611656524 915061 :Bowserinator!Bowserinat@hellomouse/dev/Bowserinator QUIT :Quit: Blame iczero something happened < 1611656524 944580 :moony!moony@hellomouse/dev/moony QUIT :Quit: Bye! < 1611656524 944621 :iovoid!iovoid@hellomouse/dev/iovoid QUIT :Read error: Connection reset by peer < 1611657286 324817 :Bowserinator!Bowserinat@hellomouse/dev/Bowserinator JOIN :#esoteric < 1611657527 410498 :iovoid!iovoid@hellomouse/dev/iovoid JOIN :#esoteric < 1611657559 645675 :moony!moony@hellomouse/dev/moony JOIN :#esoteric < 1611658138 339892 :TheLie!~TheLie@2a02:8106:215:3300:e7ad:5ab7:4ea0:e177 JOIN :#esoteric < 1611658600 58919 :LKoen!~LKoen@19.175.9.109.rev.sfr.net JOIN :#esoteric > 1611659730 714177 PRIVMSG #esoteric :14[[07Graphical Brainfuck14]]4 10 02https://esolangs.org/w/index.php?diff=80326&oldid=79429 5* 03Razetime 5* (+210) 10Added my own implementation < 1611659900 772155 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :fungot: Do you have an answer for every question? < 1611659900 995150 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :fizzie: i've heard srfi 19 is time data types and procedures: http://srfi.schemers.org/ srfi-50/ mail-archive/ msg00076.html partitioning < 1611659986 20380 :none30!none30matr@gateway/shell/matrix.org/x-tzrmrpncvuazymhz QUIT :Quit: Bridge terminating on SIGTERM < 1611660004 681920 :Discordian[m]!discordi1@gateway/shell/matrix.org/x-auuhilbfuixiizab QUIT :Quit: Bridge terminating on SIGTERM < 1611660011 888984 :acedic[m]!acedicmatr@gateway/shell/matrix.org/x-nrsfsqmwpvuiwgsc QUIT :Quit: Bridge terminating on SIGTERM < 1611660011 949449 :wmww!wmwwmatrix@gateway/shell/matrix.org/x-kcuwpneysfpfzstz QUIT :Quit: Bridge terminating on SIGTERM < 1611660707 277259 :none30!none30matr@gateway/shell/matrix.org/x-fegfuwfluewcitgs JOIN :#esoteric < 1611662291 375483 :wmww!wmwwmatrix@gateway/shell/matrix.org/x-cyftydrgcguzmfqf JOIN :#esoteric < 1611662291 500271 :acedic[m]!acedicmatr@gateway/shell/matrix.org/x-uprxqavfkpxdrzro JOIN :#esoteric < 1611662292 707049 :Discordian[m]!discordi1@gateway/shell/matrix.org/x-khrotcqjhbvqvftv JOIN :#esoteric < 1611664070 636186 :TheLie!~TheLie@2a02:8106:215:3300:e7ad:5ab7:4ea0:e177 QUIT :Remote host closed the connection < 1611664803 475342 :LKoen!~LKoen@19.175.9.109.rev.sfr.net QUIT :Remote host closed the connection < 1611664947 568233 :LKoen!~LKoen@19.175.9.109.rev.sfr.net JOIN :#esoteric > 1611667288 25303 PRIVMSG #esoteric :14[[07Special:Log/newusers14]]4 create10 02 5* 03Seshoumara 5* 10New user account > 1611668271 83386 PRIVMSG #esoteric :14[[07Parse this sic14]]4 M10 02https://esolangs.org/w/index.php?diff=80327&oldid=80320 5* 03Digital Hunter 5* (+1) 10/* Example programs */ < 1611669177 914576 :user24!~user24@2a02:810a:1440:7304:a863:6681:e17:a946 QUIT :Quit: We must know, we will know > 1611669398 302521 PRIVMSG #esoteric :14[[07Esolang:Introduce yourself14]]4 M10 02https://esolangs.org/w/index.php?diff=80328&oldid=80162 5* 03Seshoumara 5* (+492) 10 < 1611670687 974910 :test00471!4df3179f@gateway/web/cgi-irc/kiwiirc.com/ip.77.243.23.159 JOIN :#esoteric < 1611670864 447513 :test00471!4df3179f@gateway/web/cgi-irc/kiwiirc.com/ip.77.243.23.159 QUIT :Quit: Connection closed < 1611671635 69779 :gthread20!~gthread-2@77.243.23.159 JOIN :#esoteric < 1611671848 892655 :Arcorann!~awych@159-196-65-46.9fc441.mel.nbn.aussiebb.net QUIT :Ping timeout: 260 seconds < 1611671860 217021 :gthread20!~gthread-2@77.243.23.159 PART #esoteric :"Leaving" < 1611671907 294900 :gthread20!~gthread-2@77.243.23.159 JOIN :#esoteric < 1611671962 81393 :gthread20!~gthread-2@77.243.23.159 QUIT :Quit: Leaving (123) < 1611671977 377451 :gthread20!~gthread-2@77.243.23.159 JOIN :#esoteric < 1611672658 746206 :gthread20!~gthread-2@77.243.23.159 QUIT :Quit: Leaving < 1611672713 266410 :TheLie!~TheLie@2a02:8106:215:3300:e7ad:5ab7:4ea0:e177 JOIN :#esoteric > 1611673358 245849 PRIVMSG #esoteric :14[[07Talk:Lazy evaluation14]]4 10 02https://esolangs.org/w/index.php?diff=80329&oldid=68869 5* 03Chibiningen 5* (+312) 10/* Relevance to Esolangs? */ new section < 1611673891 105350 :int-e!~noone@int-e.eu PRIVMSG #esoteric :esowiki: we could just revert to https://esolangs.org/w/index.php?title=Lazy_evaluation&oldid=65961 ... > 1611674280 216725 PRIVMSG #esoteric :14[[07User:Martin Ender14]]4 10 02https://esolangs.org/w/index.php?diff=80330&oldid=54082 5* 03Martin Ender 5* (+4) 10 < 1611674454 248997 :chibi_!~chibi@75-26-238-119.lightspeed.glvwil.sbcglobal.net PRIVMSG #esoteric :int-e: That works, lol. < 1611674492 947744 :chibi_!~chibi@75-26-238-119.lightspeed.glvwil.sbcglobal.net PRIVMSG #esoteric :Though it'd still be nice to have a list of lazily evaluated Esolangs somewhere. < 1611674555 209500 :int-e!~noone@int-e.eu PRIVMSG #esoteric :it is there, to be evaluated lazily < 1611674611 18638 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(It took me a moment to get to the bottom of the "More info will be added upon request" part. In the old version, that is...) < 1611674674 936127 :chibi_!~chibi@75-26-238-119.lightspeed.glvwil.sbcglobal.net PRIVMSG #esoteric :Oh let's not talk about ⊥, nothing good ever comes out of ⊥ < 1611674687 458989 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Oh that part was actually preserved. < 1611674762 318267 :int-e!~noone@int-e.eu PRIVMSG #esoteric :That pun was a fortunate accident. :) (But I did spot it before hitting RET.) < 1611674792 464337 :MDude!~MDude@71.50.47.112 JOIN :#esoteric < 1611675374 379819 :gthread20!~gthread20@77.243.23.159 JOIN :#esoteric < 1611675400 392437 :arseniiv_!~arseniiv@136.169.229.70 QUIT :Ping timeout: 264 seconds < 1611675683 319576 :Sgeo!~Sgeo@ool-18b98aa4.dyn.optonline.net JOIN :#esoteric < 1611675812 141739 :SpaceDecEva!2fcce04e@47.204.224.78 JOIN :#esoteric < 1611675862 926397 :gthread20!~gthread20@77.243.23.159 PRIVMSG #esoteric :> "test" < 1611675864 969922 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : "test" < 1611675879 926240 :gthread20!~gthread20@77.243.23.159 PRIVMSG #esoteric :> "hello "++"world" < 1611675881 642902 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : "hello world" < 1611675938 133843 :gthread20!~gthread20@77.243.23.159 PRIVMSG #esoteric :> init$fmap(let f=(\x->if x==0 then 0 else 1+(f(x-1))) in chr.f)$take 39$map(\x->117-(mod(div(read(concat(map(\x->show(ord x))"\STX?3T\NUL\SOH0\"c\STX.SV:MN=\SOH3\STX2)+\SOH'`3\STX!\SOHA[\SOH2\STXKZD\STXN\"&$\STX5\"\ETX\SOH"))-1)(117^(38-x)))117))(iterate(+1)0) < 1611675940 126055 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : "23151 Segmentation fault (core dumped)" < 1611676025 782143 :gthread20!~gthread20@77.243.23.159 PART #esoteric :"Leaving" < 1611676252 441803 :TheLie!~TheLie@2a02:8106:215:3300:e7ad:5ab7:4ea0:e177 QUIT :Remote host closed the connection < 1611676475 135870 :arseniiv_!~arseniiv@136.169.229.70 JOIN :#esoteric < 1611676554 66495 :rain1!~My_user_n@unaffiliated/rain1 PRIVMSG #esoteric :hmmmmm < 1611677214 112187 :SpaceDecEva!2fcce04e@47.204.224.78 QUIT :Quit: Connection closed < 1611678769 345649 :sprock!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric < 1611680239 329507 :arseniiv_!~arseniiv@136.169.229.70 PRIVMSG #esoteric : Though it'd still be nice to have a list of lazily evaluated Esolangs somewhere. => check out Ⅎ, I created a page and a name for it but the idea is stumbled upon quite regularly, that’s because it’s an equational functional language without anything else. Hopefully I marked laziness as a must there < 1611680244 63351 :arseniiv_!~arseniiv@136.169.229.70 NICK :arseniiv < 1611680340 144867 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :though it by no means should have lazy evaluation, as its essence is “functional equational”, but what’s done is done and anyway the page can be edited. I already named three variants of the language, so there may be six and more < 1611680611 72553 :LKoen!~LKoen@19.175.9.109.rev.sfr.net QUIT :Remote host closed the connection < 1611681841 458470 :Deewiant!~deewiant@de1.ut.deewiant.iki.fi QUIT :Quit: WeeChat 2.3 < 1611683816 414725 :Deewiant!~deewiant@de1.ut.deewiant.iki.fi JOIN :#esoteric < 1611684874 280712 :TheLie!~TheLie@2a02:8106:215:3300:e7ad:5ab7:4ea0:e177 JOIN :#esoteric < 1611686937 90226 :LKoen!~LKoen@19.175.9.109.rev.sfr.net JOIN :#esoteric < 1611687515 118772 :TheLie!~TheLie@2a02:8106:215:3300:e7ad:5ab7:4ea0:e177 QUIT :Remote host closed the connection > 1611687573 792276 PRIVMSG #esoteric :14[[07Stupidc14]]4 N10 02https://esolangs.org/w/index.php?oldid=80331 5* 03Not applicable 5* (+1310) 10i'll finish it later < 1611687651 84546 :arseniiv!~arseniiv@136.169.229.70 QUIT :Ping timeout: 256 seconds < 1611690037 399265 :arseniiv!~arseniiv@136.169.229.70 JOIN :#esoteric > 1611690049 119256 PRIVMSG #esoteric :14[[07Stupidc14]]4 M10 02https://esolangs.org/w/index.php?diff=80332&oldid=80331 5* 03PythonshellDebugwindow 5* (-24) 10Use Templates Lowercase, Stub < 1611690340 73695 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :how do you call when there are several type systems each more precise than the last, and you may type program elements in any of them? It seems “gradual typing” denotes just one special case (two type systems, of which one is trivial with a single type). And that’s not plain subtyping either, as we have constraints on all occurring subtypes < 1611690410 839877 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :ais523: may I ping you, maybe you have a clue about that < 1611690411 974098 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :"refinement types" are a related concept, though I think not precisely what you're describing < 1611690669 783275 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :kmc: thanks, this is a good reminder. Being able to express pre-/postconditions in types is a good thing < 1611690679 654434 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :yes < 1611690729 526408 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :there are a lot of interesting implementation options, too < 1611690805 669485 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :like you may be able to discharge some of the predicates at compile time, and whatever's left can be emitted as asserts (maybe only for debug builds), and subject to QuickCheck-style automatic test case generation < 1611690871 352313 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :you could even have a compiler which "finishes" and yet continues to prove correctness properties and/or find counterexamples in the background < 1611690875 201867 :LKoen!~LKoen@19.175.9.109.rev.sfr.net QUIT :Remote host closed the connection < 1611690918 197870 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :continuous integration not as a set of discrete build/test jobs but as a continuously running and arbitrarily scalable pool of compute resources which is continually trying to break or improve your code < 1611691274 266570 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :it's also kind of related to lazy evaluation < 1611691327 55752 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :like you can think of the whole space of types/values as a single poset < 1611691377 291837 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :you can refine from "any" to "int" to "[0, 10]" to "[1, 3]" to "2" < 1611691383 209385 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :(using ranges as a simple example) < 1611691427 95495 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :and maybe a function doesn't need to return "2" precisely, maybe the caller only wants to know if the result is within [1, 3] < 1611691477 319397 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :in traditional lazy languages like Haskell you have this capability but only for the structural refinement of algebraic types with pattern matching < 1611691533 469658 :LKoen!~LKoen@19.175.9.109.rev.sfr.net JOIN :#esoteric < 1611691541 819004 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :so for example if you want lazy natural numbers you have to represent them as unary Peano numbers and you can only make lazy queries of the form "is it at least X" < 1611691745 394811 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :and there's a connection to topology too, which i can't explain very well because i don't really understand topology < 1611691767 129149 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :but like think of your refinement types as open / semidecidable sets < 1611691775 370751 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :so that if x \in T then you can prove it in finite time < 1611691797 126232 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :and then you want to work with continuous functions < 1611691827 399711 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :so that answering a query of the form y \in f(x) reduces to answering a disjunction of x \in S_0, S_1, etc. < 1611691830 453176 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :i dunno < 1611691844 793722 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :i'm probably not making a lot of sense cause i'm only kind of grasping at these concepts but i think there's something cool there < 1611691858 662948 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :I had a discussion with a pal about what I dislike in pure structural subtyping (at least for OOP-like languages with classes or records which are so subtyped), and I suggested adding “semantic tokens” to method names to make accidental subtyping less possible, but that obviously opens its own can of worms; < 1611691858 768728 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :and from their questions I noticed that one just need to be able to declare way more properties of methods (and classes awhole), and then any accidental subtyping would mean just that we didn’t state enough. Pre-/postconditions, algebraic identities on functions and all that are steps at that path; < 1611691858 768773 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :and then we’ll have type relations we are at ease with, as they are all grow from a type’s properties (those we wished to make its public API) < 1611691858 768782 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric : and whatever's left can be emitted as asserts <…> and subject to QuickCheck-style automatic test case generation => yeah, that’s very nice. Several languages with subtyping approach the first to a very small degree, via “assert x is T” which generates a runtime check and refines the type of x to T in the code that follows the assertion < 1611691858 788881 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :yep I remember something about the topology regarding ⊥, Just ⊥ and things like that, and this should be closely related < 1611691915 469872 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :(sorry this is in this order, I wrote the first part then read what you’ve been saying) < 1611692059 517391 :pikhq!sid394595@gateway/web/irccloud.com/x-jcakagrinmcrwwxd QUIT :Ping timeout: 272 seconds < 1611692097 61815 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :hm and I see refinements allow us to express state changes in objects after calling methods and deny us calling them in the wrong order, and make state machines and all that, which I wanted a bit < 1611692204 824987 :pikhq!sid394595@gateway/web/irccloud.com/x-bjismhylvruyngyx JOIN :#esoteric < 1611692272 820226 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :of course this magic bullet is costly. If I was messing with such a type system, I would have to allow users to write by hand proofs of facts hard to check, or even boldly claim “this one makes out right” without proof < 1611692341 498379 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :hm should I try to learn some F*? < 1611692361 650955 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :it seemed to have refinement types IIRC < 1611692401 10744 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :and many other things, and it tries to reason about them using some solver magic < 1611693074 381180 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :that state-change thing is called "typestate" < 1611693133 5532 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :in a pure functional setting it's easy to do with phantom types < 1611693203 573720 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :in an imperative setting it's less natural < 1611693220 246412 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :because passing a value to a function / calling a method on an object generally doesn't generally change the object's type < 1611693227 789506 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :most imperative langs have no way to express that < 1611693282 275150 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :one solution I can think of is to have the actual object mutate in-place but it also returns a "token" of the correct type, which you have to pass to future method calls < 1611693295 478586 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :the token is just some zero size object which proves that you called the earlier method < 1611694036 734346 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :that’s cumbersome even when plumbed away < 1611694121 510110 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :for a moment I thought self-types solve at least a small part of this but no, they just allow to restrict subtype definitions < 1611694166 268874 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :someone should make an OOP esolang with pre-post-self-types, then < 1611694415 462531 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :though that should be somehow constrained, or else having multiple references to the same object will require either something linear to control whether there are multiple references, or something indirectional to allow change an object to something completely different. Of course if all we want is encoding typestates, thanks for the term, then we’ll need to know if two types are typestates of the same object or not, but that doesn’t seem too hard < 1611694415 581573 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :if we’re not making the type system too elaborate?.. < 1611694660 187703 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :arseniiv: re two levels of typing, one finer than the other: rust sort of has that: first you figure out which identifiers exist in which scopes, and which ones are value, types, functions, modules, traits etc, then it figures out the type of every expression and typechecks the program but you can do that ignoring lifetimes, then you checks lifetime. C without C11 _Generic first figures out each < 1611694666 144245 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :identifier in each scope and which ones are types, values etc, then you typecheck which you can do ignoring const and volatile qualifiers, then you check for const correctness. < 1611694723 240129 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :(this does not work in C++ because C++ can have functions overloaded or templates specialized on a nested const qualifier.) < 1611694841 852952 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :but as for *several* type systems, instead of just three, I'm not sure. I have a vague idea for an esolang that is an infinite nesting of identical layers, each one a syntactical preprocessor for the levels below it, but I couldn't yet figure out a nice way to do it. < 1611694856 433097 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :b_jonas: interesting! (Though I should have added more, I meant something in vein of declaring these levels on a user level, though I didn’t think enough about details and maybe refinements are a sufficient answer) < 1611695016 589728 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :"if you want lazy natural numbers you have to represent them as unary Peano numbers" => I still don't understand why people claim this, or in what sense it is true. you can absolutely have lazy natural numbers represented in other ways, eg. "http://www.math.bme.hu/~ambrus/pu/Bin.hs" < 1611695062 910683 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :like, I wrote a function and typed it int → int but then someone wasn’t satisfied and typed it odd → even, or even maybe (odd → even) ∪ (even → odd) for example, so their code with more specific types of other functions would be able to use this function without any unnecessary casts or such < 1611695093 296414 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :in that, you can lazy evaluate a number to tell if it's odd or even, or to tell its value modulo 2, etc, but you can only tell whether it's less than a constant or not if you happen to have fully evaluated it < 1611695131 73258 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :hm wait now I see p-adic topology!! < 1611695138 666221 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :in all its grace < 1611695159 785111 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :didn’t connect that < 1611695285 756405 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :and the topology for computing with lazy Peano numerals would be the usual topology of neighborhoods of ∞, a quite familiar one from real analysis < 1611695305 765042 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :now is there something unlike those and also practical? < 1611695371 650334 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :arseniiv: if by "accidental subtyping" you mean because method names happen to be used for multiple different things, you can have method names that are scoped like normal identifiers, as in Rust and Haskell, but unlike in python or C++ (without modules), but even then people sometimes use the same method names for different semantics for convenience of writing code with short method names, especially < 1611695377 651760 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :punctuation operator methods. < 1611695462 66018 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :you'd need more fancy distinctions between method names to distinguish between different semantics, and lots of methods that are just special case synonyms of other methods < 1611695479 854649 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :b_jonas: yeah precisely. And sometimes their signatures may match and the typechecker may thing one of them is compatible with the other, even in a good case when we have classes and protocols, the latter abstract and the former not subtyping one another < 1611695539 556039 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :so you can most certainly build classes this way in rust or haskell, they would just be annoying to use < 1611695607 87478 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :and I actually quite like rust's scoped methods < 1611695614 19720 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :and it was a small discovery to me that this is fixable in a natural way, just giving more information about what a subtype’s methods should satisfy < 1611695636 164206 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :haskell and rust are okay in that they aren’t precisely structural-types < 1611695638 943686 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :though the standard library makes a few questionable choices about naming the functions that aren't methods < 1611695644 635150 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :structural-typed* < 1611695683 237969 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :I very much like typeclasses and traits for the freedom they give and for semantics they for an extent bind < 1611695722 791454 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :but you can wrap many things with your own differently named abstractions < 1611695743 111559 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :when you don't like the names that is < 1611695768 612452 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :though I wonder if one can solve the problem of inserting a typeclass “in the middle” of existing ones (like we want to have Eq t => (new) PartialOrd t => Ord t) < 1611695836 193585 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :arseniiv: that one is not easy < 1611695849 355518 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :but usually you can do one of the less powerful things that's enough for your use case < 1611695867 969317 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :13:13 < arseniiv> haskell and rust are okay in that they aren’t precisely structural-types < 1611695880 603550 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :neither one has structural subtyping, period < 1611695888 912818 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :Haskell doesn't have any subtyping, and Rust only has subtyping with respect to lifetimes < 1611695890 171102 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :b_jonas: sometimes wrapping is the last resort, for example in this middle-class thing one may redeclare their own hierarchy and it may end up with wrapper dictionaries at runtime < 1611695916 991942 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :redeclare the hierarchy the right way and reimplement all the needed instances* < 1611695952 275044 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :I think the type-based name resolution of methods in Rust is a pretty significant usability improvement over Haskell < 1611695977 424547 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :no more qualified imports for 10 libraries that all have a method called 'insert' that works on a different type < 1611695994 888379 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :but it's also not the same as subtyping or ad-hoc overloading < 1611696022 86757 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :kmc: you don't need such a strong trait system for that, C++ can also dispatch named functions based on their argument types :-) < 1611696026 404886 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :once you want a function that's generic over all things with an 'insert' method then you need to define a trait and impl it and get precise about what the requirements are < 1611696045 233376 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :otherwise, they are just unrelated methods that happen to have the same name < 1611696058 870073 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :and if there is ambiguity it's an error < 1611696076 276173 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :b_jonas: yes, and I think the fact that Rust *doesn't* do that for arguments *other than* the method receiver is a usability improvement over C++ < 1611696134 438533 :kmc!~beehive@unaffiliated/kmcallister PRIVMSG #esoteric :it does mean that methods are special though. x.f(y) is not just an alternative way to write f(x, y), it gives you type directed resolution of the name 'f' with respect to the type of 'x' (but not 'y') < 1611696144 590568 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :kmc: yes, that's why I said in rust they're *scoped* method names, in C++ (without conceps) it's just a string compare on the method names < 1611696169 612788 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric : neither one has structural subtyping, period => oops, indeed. For some time I thought there was something like structural subtyping without subtyping but I don’t know how that thing was born and lived for a time. I knew for a long time haskell and rust don’t have subtyping, but somehow I ended up with misnaming < 1611696200 99683 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :kmc: so? methods are special in haskell and rust too, they're just special in a different way < 1611696312 128912 :delta23!~deltaepsi@d179-68-39-184.evv.wideopenwest.com JOIN :#esoteric < 1611696355 71384 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric : I think the type-based name resolution of methods in Rust is a pretty significant usability improvement over Haskell => yes! I thought that too. And rust still allows methods analogous to static methods in OOP, and it’s a shame languages with OOP-like syntax usually don’t allow to abstract those. Then one can’t even have a monoid interface < 1611696454 547216 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :I also came to think ad-hoc overloading is usually unneeded. When a language allows optional arguments, variadic arguments etc. then that’s almost never seems a good idea to have in addition < 1611696482 337893 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :kmc: there are some parts of rust syntax that I quite hate, but that in particular isn't one < 1611696571 319130 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :what gives me hope is that rust already managed to change syntax in such a way that you can combine old and new syntax even within the same compilation unit through macros, so they could "fix" the syntax (or provide an alternate non-traditional syntax) while giving access to all existing libraries. not that I have high opinion about the existing libraries currently, but still. < 1611696715 789894 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :also a tangent on name resolution above: it’s a shame haskell has this “import qualified Data.Map as M; import Data.Map (Map)” thing to not need to write M.Map (or even Map.Map for cases where single-letter aliases aren’t good) < 1611696774 925140 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :ah, and that record selectors and accessors are in the module’s scope too < 1611696813 372286 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :I saw discussions of what can be done to make things neater and it didn’t seem to take off very high still < 1611696948 722738 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :so much experience is dependent on the import system and scoping < 1611697629 773208 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :arseniiv: I don't understand why that's a shame < 1611697651 858403 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :haskell also lets you rename names as you import < 1611697679 875153 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :so if you have Map in two different modules, you can import one of them as XMap and the other as YMap, or even as single-letter names if you want < 1611698446 682338 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :this is good though I’ll consider it a baseline for contemporary languages. But the need to write two imports to not write Map.Map further is still a nuisance < 1611698483 713020 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric :though to be honest I think I’m completely okay with M.Map < 1611699153 869853 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esoteric :Does Haskell have yet the possibility to use escaped names in imports? (Or, do you need Template Haskell to do that?) < 1611699334 701820 :LKoen!~LKoen@19.175.9.109.rev.sfr.net QUIT :Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.” < 1611699772 545803 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :zzo38: what do you mean by "escaped names"? > 1611700329 269316 PRIVMSG #esoteric :14[[07Caballo14]]4 10 02https://esolangs.org/w/index.php?diff=80333&oldid=80324 5* 03CatIsFluffy 5* (+67) 10Add input, since it turns out input is good < 1611700514 715808 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :I wish mobile phone providers gave this service where, besides my 12 character phone number, I also get a 15 or 16 character long phone number that they guarantee will never be reused, and then I give that number for two-factor authentication such as to my bank < 1611700552 464220 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :I'd prefer it to be even longer, but I think there's some technical limit where you might not be able to call a number longer than 15 or 16 characters through some routes < 1611700561 25179 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :(or SMS rather than call) < 1611700602 507894 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :(I guess they could give a 15 or 16 character long number, whichever is below the limit, and a 25 digit long number too) < 1611700655 806188 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :right now the 12 character phone numbers come from small namespaces and routinely get reused if I don't confirm my phone number in time > 1611700657 202706 PRIVMSG #esoteric :14[[07Brainfuck---14]]4 10 02https://esolangs.org/w/index.php?diff=80334&oldid=73518 5* 03CatIsFluffy 5* (+7) 10Fix category < 1611700971 973376 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :o.o < 1611701013 297464 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :that sounds wonky, or at least here my mobile number is "basically permanent" and you can transfer it to a new service provider as well < 1611701246 765653 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :and I'm not losing it as long as like, I have a phone plan tied to it < 1611701246 829622 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :FireFly: I can transfer it to a new service provider < 1611701246 829683 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :and I try hard not to lose my main one < 1611701246 829703 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :*nod* < 1611701246 850688 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :but I've lost at least one spare, plus at least two of my grandmother's spares < 1611701246 873901 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :I'm just confused since our mobile numbers are 10-digit and we seem to be doing fine < 1611701246 873963 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esoteric :b_jonas: I mean if the name of a module or something in that module contains non-ASCII characters, to be able to use escape codes in the import to refer to them, specifying an alternative name which may be limited to ASCII characters. (It can also be used even if the name does consist entirely of ASCII characters, for example in case there is some name you must avoid for some reason) < 1611701246 895578 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :There was a story here about a PAYG ("pay as you go") customer getting their phone number recycled because the providers are pretty aggressive in trying to clean up abandoned ones. < 1611701246 895632 :sprock!~sprocklem@unaffiliated/sprocklem QUIT :Quit: Lost terminal < 1611701246 917576 :arseniiv!~arseniiv@136.169.229.70 PRIVMSG #esoteric : you can transfer it to a new service provider as well => neat! < 1611701246 939361 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :with the first two digits being completely fixed for mobile numbers (at least for now, but I guess that might change at some point as landlines are getting increasingly rare, so the old arrangement might change) < 1611701257 35827 :sprock!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric < 1611701336 770706 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Finland had a big area code renumbering at one point. I think it was still before ubiquitous mobile phones, but they coalesced the 80 or so geographical groupings down into just 13. < 1611701462 34761 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :I think we had a renumbering at some point too, but that was before my time.. < 1611701463 810818 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I don't remember what they did with the other digits though. I think maybe my grandparents' landlines just got a sixth digit added (between the area code and the previous number), presumably to disambiguate from others now joining the same area code. < 1611701486 706435 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :and presumably also when we switched to 112 as emergency number, from the old 90000 < 1611701539 306899 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :In the big Helsinki metropolitan area, I think everyone already had 6-digit numbers, and they just flipped the "90" area code to "09". The old ones all started with 9, the new ones with the more international 0. > 1611701656 225046 PRIVMSG #esoteric :14[[07Caballo14]]4 M10 02https://esolangs.org/w/index.php?diff=80335&oldid=80333 5* 03CatIsFluffy 5* (-1) 10Okay how did I miss that < 1611701972 628007 :rodgort!~rodgort@static.38.6.217.95.clients.your-server.de QUIT :Quit: Leaving < 1611702066 62291 :Arcorann!~awych@159-196-65-46.9fc441.mel.nbn.aussiebb.net JOIN :#esoteric < 1611702222 954529 :rodgort!~rodgort@static.38.6.217.95.clients.your-server.de JOIN :#esoteric < 1611702703 135461 :CatIsFluffy!490fc716@c-73-15-199-22.hsd1.ca.comcast.net JOIN :#esoteric < 1611704012 214379 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :FireFly: I said 12 character (in Hungary), as in the plus sign, two digits for the country code, two digits of area code (currently only 5 out of the 91 possibilities are for mobile phones, but this set can change), then seven remaining digits. < 1611704030 92831 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :ah fair < 1611704095 21374 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :It's a great badge of shame that Finland got a three-digit country code. < 1611704098 748456 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :here the mobile prefixes are all 07x but not all x'es are allocated for mobile purposes (though quite a lot are now I think) < 1611704100 994980 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :but the length can vary by country and possibly even within countries < 1611704102 196163 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Denmark, Sweden, Norway all got two-digit ones. < 1611704142 814124 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :fizzie: I think at one point they decided that two digit country codes were a mistake and they'll no longer issue any, so all the two digit codes are legacy ones < 1611704174 733164 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :They've certainly reshuffled them. Finland got a two-digit one initially. < 1611704178 518524 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :I don't think so, I think it was just an arbitrary division with which countries had more influence on the system < 1611704227 384389 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :oh maybe not, idk < 1611704230 830383 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Then when they did the current numbering that's a little more grouped by continent, Europe (allegedly) got +3x and +4x because France (+33) and UK (+44) did not want to change their two-digit numbers. < 1611704242 702615 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :I was mixing it up with the 3/4 split < 1611704246 684266 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :heh < 1611704293 461522 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :But in that reshuffle Finland got shunted into the three-digit club. Fair enough, someone's got to get there. And Iceland's at +354 -- but they're a lot tinier country too. < 1611704330 934679 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :I always thought the +4 prefix was allocated to a weird set of countries < 1611704359 878325 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :especially with the rest of the nordic ones being in +4 but finland getting a +3 prefix < 1611704412 669887 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :It's kind of convenient that Czechoslovakia had a two-digit code (+42), because when they split up, they could just split that into +420 for the Czech Republic and +421 for Slovakia. < 1611704439 812512 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :fizzie: nine of the two-digit codes starting with +4 are used, so ... I think they just ran out of +4 < 1611704452 745973 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :admittedly there are more three-digit +4 codes open < 1611704491 696944 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :(and of course some of Europe is technically under +7 and +9, but that's a technicality) < 1611704563 588803 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :And it makes sense they ran out of two-digit codes, it's just that why are we the country who got left over, why not [insert a country we think less of] instead. < 1611704567 335583 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Anyway. < 1611704624 157091 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :UK does this odd thing where mobile phone numbers are considered to have a five-digit area code, it's grouped as "07xxx xxxxxx" Sometimes with the last six split into 3+3. < 1611704796 728854 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The geographic landline numbers are "02x xxxx xxxx" for the most part, although for some reason there's a persistent myth that "0207" and "0208" would be separate area codes, even though they're not. < 1611704811 716533 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :There's even a whole Wikipedia page about it, https://en.wikipedia.org/wiki/UK_telephone_code_misconceptions < 1611705237 922604 :delta23!~deltaepsi@d179-68-39-184.evv.wideopenwest.com QUIT :Quit: Leaving < 1611705532 594036 :b_jonas!~a@catv-176-63-12-49.catv.broadband.hu PRIVMSG #esoteric :fizzie: there are 11 character long premium call phone numbers of the pattern +3690?????? or +3691?????? where in some cases even the last but one digit changes the pricing, so you could consider the area code to be seven digits long in some sense