< 1190420289 0 :edwardk!n=edwardk@pdpc/supporter/base/edwardk JOIN :#esoteric < 1190420303 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ACTION waves hello. < 1190420435 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1190420460 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :how goes? < 1190420475 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :fine i guess < 1190420493 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :doing some work on my language < 1190420504 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :which one is that? < 1190420536 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i'm sitting here doing basically the same with a stripped down version of mine as well =) < 1190420589 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :which i guess could basically be described as a haskell without types at this point < 1190420593 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk, my everlasting project < 1190420602 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :cute name < 1190420605 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1190420629 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :that's what happens when you don't think of a name for your language and someone asks what the name is... < 1190420638 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1190420649 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :and your nick is oklo*o* < 1190420664 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :mine has gone through a few names, so i typically just refer to it as 'my toy language' =) < 1190420695 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :nuel, kata, catalan, opt, and spec have all be the name at some point < 1190420709 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :http://www.vjn.fi/pb/p454332531.txt <<< it's heavily based on finite state machines that are introduced via a regex-like syntax < 1190420715 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1190420719 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i dropped nuel coz its no longer a curry howard correspondence of the display logic < 1190420723 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :kata is still in the running < 1190420727 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :catalan is an actual language ;) < 1190420736 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :opt and spec are still open < 1190420738 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i dunno < 1190420742 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :just need to pick something ;) < 1190420745 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :"opt" and "spec" are kinda reserved for other usage < 1190420748 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190420754 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and there is spec# < 1190420757 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :not that that has ever stopped anyone :) < 1190420765 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :(C, D...) < 1190420768 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :they acronymed nicely into what i was doing < 1190420791 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and the running joke of my friends is that my language name is 'x, where x is a variable to be determined later' < 1190420846 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :however, the acronym's for those describe the full language design and not the kinda fun stripped down version that i'm playing with now < 1190420966 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :what's stripped? < 1190420974 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so what is the premise of oklotalk? =) < 1190421012 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :types =) < 1190421031 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :its a language where i was exploring substructural type systems to start with, thats where the humor lies < 1190421040 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :uh, what's a premise? :) < 1190421043 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :since its all about type safety =) < 1190421066 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :my main "pet" languages have been "Synthesys", "Lojo" and "Sprocket", the third of which was actually fully implemented. < 1190421070 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Lojo got pretty close < 1190421089 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and Sprocket incorporates the best ideas from Synthesys in a more usable fashion, so no loss there < 1190421093 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i've read every conversation you've had about your language on this channel, edwardk, though i haven't understood more than a third :) < 1190421110 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :basically at this point in time i'm trying to see if i can rederive most of the power of a traditional type theory through flow analysis and a simplist theorem prover over a basic universal type < 1190421123 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :interesting < 1190421167 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I started out with imperative designs, drifted into stack-based variants, and am now finding myself designing increasingly functional-style languages < 1190421173 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i had started building up over a pretty powerful base type system, which didn't leave the theorem prover much to do, so i figured it was a more interesting result to see not if i could augment the power of a type system, but instead how much of it i could supplant < 1190421177 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190421179 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i'm trying to find a way to check for straights in tic-tac-toe using my language... < 1190421184 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1190421203 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: I've never seen a particularly elegant algo for that in any language < 1190421205 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i went sort of the same path, i went imperative, drifted into computer algebra system designs, and now i'm functional with lazy semantics and optimistic evaluation < 1190421222 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: do link < 1190421222 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :the board is too small to really optimize the problem for without increasing overhead < 1190421231 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :? < 1190421241 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :gimme url, that is :) < 1190421248 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :for what? < 1190421255 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :for that elegant algo < 1190421265 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :go back and reread what I said < 1190421419 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1190421446 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :"I've never seen a particularly elegant algo..." < 1190421522 0 :ehird`!unknown@unknown.invalid QUIT : < 1190421545 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :whooops < 1190421574 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :oklo: in any event i've currently got none of the type features enabled including the substructural things, so its not that hard to understand its current behavior its more or less haskell and erlang's bastard child. < 1190421584 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: lol < 1190421592 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i'm doing it the brute force way first, since the technique i'm using is still under constructino < 1190421596 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*construction < 1190421612 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: my language "Sprocket" is the bastard child of LISP and PostScript. :D < 1190421618 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1190421627 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: as you prolly guessed, i read that without the "never" < 1190421639 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :"any" sounded kinda weird there indeed :) < 1190421657 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: i see < 1190421671 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :have you done any implementing? < 1190421702 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :what i have right now is that anything starting in upper case is a 'constructor' ala haskell's data constructors, and you can specify an arity for them, and use pattern matching primitives, and a trick to make monads work without types. < 1190421771 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah quite a bit. i had an interpreter and theorem prover for the full language working, now i have an interpreter i've been toying with for the stripped down language that i figure i'll sit down and finish up this weekend since i want to rewrite the parser completely to strip out the remnants of the old logic < 1190421840 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :what i need to get right is the pattern matcher since i use a strange rule when compared to haskell or language's like that, because my rule lets me work around my lack of typeclasses < 1190421856 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and still provide haskell like 'magic ints' and 'overloaded' operators, etc. < 1190421890 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :how much of the language is intended to be primitive, versus synthetic? < 1190421894 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :http://www.vjn.fi/pb/p645463521.txt <<< checking for lines is currently done in an ugly prolog way :) < 1190421902 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :in this version? not much =) < 1190421902 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hopefully i'll find a better way tomorrow. < 1190421933 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i'm fairly sure you can't decipher that, but it's a graphical tic-tac-toe with 3x3 array < 1190421947 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I can understand some parts of it < 1190421963 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :"end" is pretty cluttered. < 1190421978 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i'm gonna enhance the list regex syntax a *lot* < 1190421986 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :its got a pattern match dispatcher, and primitive bigint support through GMP. assignment is primitive, beyond that most traditional language features, if, booleans, etc. are built up in the language < 1190421998 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :it's just i invented that feature this morning, so it's a bit undeveloped yet :PO < 1190422000 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*:P < 1190422016 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heh at one point in time i had a typecheck operator and subtyping operator defined in the language in two lines of code =) < 1190422017 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :x <: x < 1190422031 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i read some of your code < 1190422041 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :x : y | type x <: y < 1190422061 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :you do almost everything synthetically < 1190422063 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :the following is a fairly unreadable but completely valid fibonacci sequence generator in Sprocket: [clear 1 disp 0 1 !fibo ] :run [copy rollup add copy disp copy 144 nequ [!fibo] if ] :fibo < 1190422065 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i guess the code that was there wont make a lot of sense unless you know and love monads < 1190422075 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :which i find great < 1190422089 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i am glad you like =) < 1190422100 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :this is a bit easier to understand: http://www.nonlogic.org/dump/text/1190418036.html < 1190422176 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: that was a slow continuation to "(oklokok) you do almost everything synthetically", not to monads, i'm pretty neutral about those ;) < 1190422189 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i kinda figured < 1190422195 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :good, just checked < 1190422212 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the monad stuff is just so that i can evaluate lazily and not get tripped up < 1190422234 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: in oklotalk, [\1 1 {!-_+!--_}] is a fib generator :) < 1190422272 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :[\1 1{!-_+!--_}] if that space seemed like too much :P < 1190422326 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: the Sprocket version is still quite efficient. < 1190422358 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I've considered adding single-character versions of all the basic keywords, which ought to make some simple things a lot more compact < 1190422390 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :fibs = 0 : 1 : zipWith (+) fibs (tail fibs) < 1190422399 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :er < 1190422410 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :in my setting those colons become semicolons but otherwise its the same < 1190422434 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :how does that generate output? < 1190422442 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk will own pretty much any language in that exact sequence since i designed iterators to fit that purpose ;) < 1190422450 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :well, that is an infinite list so access any portion of it as needed < 1190422457 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: ah, cute < 1190422480 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i did that for fun, then realized that's nice for many other uses too < 1190422483 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :main = putStrLn (take 20 fibs) would show the first few in haskell < 1190422490 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: hm. I'm thinking it'd be a little hard to directly compare that with another language. < 1190422509 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: my code was also an infinite list, though codata has to be done in an explicit way in oklotalk < 1190422509 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :well if you just want a fib function rather than a generator list < 1190422556 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :fib 0 = 1;; fib 1 = 1;; fib n = fib (n - 1) + fib (n -2) < 1190422560 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :but thats kinda boring =) < 1190422569 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1190422585 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :and you'd do (out ([\1 1{!-_+!--_}] ! (0..10))) for the first 11 numbers < 1190422588 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the one above memoized that naive definition doesn't < 1190422600 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I'm thinking my creation is the closest to a normal language of the bunch < 1190422623 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so a memoized functional version in my setting would be < 1190422634 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1190422636 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1190422643 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :nevermind i forgot i was overloading list accesses < 1190422649 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so fibs 12 should just work above < 1190422657 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ooh, thunder and lightning outside < 1190422667 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I like watching the rain < 1190422671 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :since a list used as a 'function' is a function taking a number and returning its nth element < 1190422681 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :in oklotalk, there's no difference < 1190422682 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :(1;2;3;Nil) 1 = 2 < 1190422723 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :´[1 2 3 4](3) means you're interpreting the list as a function, and taking 4th element < 1190422731 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :(parens are optional) < 1190422745 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1190422757 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :(1;2;3;Nil) 1 = 2 <<< this is your language, not haskell, right? < 1190422759 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :in my case use of any type as the function in an application can be allowed < 1190422768 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :in my language yeah < 1190422779 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i can overload application < 1190422794 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so arrays and lists take positions to dereference < 1190422798 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :stole the trick from arc < 1190422834 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :also means you can pass in lists or arrays directly when something expects a function from nats (or in the array case anything indexable) to values. < 1190422862 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so er.. < 1190422864 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :map fibs fibs < 1190422865 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :works =) < 1190422911 0 :ihope!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1190422943 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1190422967 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :"nats"? < 1190422974 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :natural numbers < 1190422978 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :0, 1, 2, + < 1190422985 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :shorthand, sorry < 1190423048 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :my bad, should know everything. < 1190423060 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :even the contents of your head < 1190423066 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :arity 1 Succ;; type Zero = Nat;; type (Succ n) | type n == Nat = Nat < 1190423068 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :=) < 1190423074 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm... that tic-tac-toe bugs me... < 1190423087 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i don't want prolog, i want something beautiful < 1190423098 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :something fucking clever :P < 1190423108 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :=P < 1190423109 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i guess i'm onmy own there < 1190423111 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*on my < 1190423117 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :An arity keyword? What a travesty. < 1190423132 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :its a constructor based language without types < 1190423141 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :thats the only way i can tell you how many arguments that constructor takes < 1190423147 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :goes alongside infixl and infixr < 1190423210 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :any constructor without a specified arity has arity 0, so now anything that starts with an upper case letter is a constructor even with nothing else said < 1190423239 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Without types? < 1190423242 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190423259 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :monads without types, its fun =) < 1190423272 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :So what's the "type" keyword do if there are no types? < 1190423278 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :type there is a function =) < 1190423312 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :which takes the value Zero and returns the value Nat, and returns Nat when the condition is met in the second case above < 1190423347 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hey, ihope < 1190423364 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1190423375 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :you can do pretty much everything you want without adding 'type' to the language its just kinda useful for getting haskell-like typeclasses to work < 1190423390 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :it's useful for optimization too, i guess < 1190423399 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :coz how to overload + * /, etc? < 1190423412 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What's type Nat? :-) < 1190423427 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :a pattern match failure unless you specify =) < 1190423438 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :type Nat = Type;; type Type = Type < 1190423448 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :there now it has an impredicative type tower < 1190423458 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :or < 1190423460 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Impredicative type power? < 1190423481 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :arity 1 Type;; type Nat = Type 0;; type (Type n) = Type (n + 1) < 1190423484 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :s/what I said/what I meant/ < 1190423490 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :that would make it predicative < 1190423503 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I see. < 1190423512 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Is this language lazy? < 1190423514 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :basically there are two ways to define a type system with multiple layers < 1190423514 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190423608 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :one way you can define it has the sorts of types being types, and the other has them being kinds, and its whether the sort of kind is kind or superkind, and if that hierarchy keeps going up that tells you if you are predicative or impredicative. < 1190423666 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :in this setting i don't care about type systems, since they aren't needed to make monads work =) < 1190423696 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :arity 1 Ok;; return = Ok; Ok x >>= f = f x gives us an identity monad < 1190423722 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :mzero = Nil;; Nil >>= f = Nil together with the above gives us maybe < 1190423785 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and rely on the monad laws to make 'Ok' work < 1190423790 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :for other monads < 1190424013 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :is that an actual section marker symbol i see in that oklotalk code as part of the language? < 1190424021 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1190424028 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :what symbol? < 1190424033 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :before succeed and fail < 1190424050 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :§ < 1190424053 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1190424060 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :currently using it for atoms < 1190424069 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ahh < 1190424083 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :might change in case it's hard to access in non-finnish keyboards < 1190424089 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so you don't have to deal with something like my upper case first letter rule < 1190424098 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :you do. < 1190424105 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i used to use ' marks to note the beginning of an atom < 1190424110 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :lower-case first letter = parsed as a function < 1190424111 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :but that got noisy < 1190424119 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :upper-case = parsed as a value < 1190424127 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1190424130 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :§ in the beginning = parsed as an atom < 1190424135 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :coz you're strict < 1190424154 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1190424166 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i don't see how that has anything to do with it < 1190424168 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the need to have separate value and function roles < 1190424185 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i just need to know what is a function and what is a value because everything is infix/prefix parsed < 1190424186 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :same reason that ML has val and fun or whatever < 1190424206 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :any sequence of "funcokens" and "objokens" is valid < 1190424210 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :if you use my terminology < 1190424231 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :5+3+4 == 5p3p4 if you do p=+ first. < 1190424242 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :it's not about strictness < 1190424280 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :or then i'm misunderstanding something. < 1190424300 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :it's just there's no difference between operators, functions and lambdas < 1190424336 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :so you can do infix and prefix with lambdas as well as with operators < 1190424345 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :well, the issue as i'm thinking of it is why c has to have separate functions and value types. you need to distinguish between int foo() { ... } and int foo < 1190424370 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :whereas in a lazy language you don't have a need for a value/function distinction < 1190424403 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :you need to know whether "A B" means a list of A and B or "apply A to B" < 1190424415 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :a B means a (B), whereas A B means [A, B] < 1190424427 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :adjacent objokens mean an implicit list. < 1190424434 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :gotchya < 1190424457 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :but indeed, it is strict, although you can't see it from that. < 1190424470 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i inferred strict from the { ; ; ; } blocks ;) < 1190424475 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :heh :) < 1190424506 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i'm only making it strict because i'm not confident enough in my implementation skills < 1190424527 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :it will be lazy in version 2 :P < 1190424544 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :since i don't see why not be lazy < 1190424551 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i'm currently lazy and side effect free, but i may revert to a pathological reduction rule i used to use that i like which is worst-case lazy or strict. whatever it wants to do. so you have to make sure all of your reductions are confluent. < 1190424575 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :uh,, confluent? < 1190424577 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and the only promise i make is i won't strictly reduce anything wrapped in a 'lazy' keyword < 1190424579 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*, < 1190424587 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i see < 1190424620 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk has special syntax for introducing generators, those can be used for pretty much anything laziness can, though admittedly it's not as pretty < 1190424648 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the basic issue is that you need to guarantee that your code would work no matter how it was evaluated strictly or lazily, but in exchange the compiler can partially evaluate a larger class of things and take optimization steps that are unsound in EITHER a lazy or a strict language < 1190424713 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190424726 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :not specifying stuff is the key to efficient optimization < 1190424729 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand you have the burden of both disciplines, you have the space reasoning issues of a lazy language and the need for explicit 'lazy' annotations of a strict language, though you don't have an explicit 'force', so you get a small win there. and you still have to reason about side effects via a monad or CPS or other trick like a lazy language < 1190424784 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm, i don't see how laziness and side-effects relate < 1190424789 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :uhh < 1190424794 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i do, actually. < 1190424816 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :currently i'm using an 'optimistic with lazy semantics' rule which says it can waste work on things eagerly but it has to bound the amount of speculation and if it encounters an error while speculating it has to pretend it didn't happen and turn that speculation into a lazy thunk to be forced on demand. < 1190424850 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :heh, i see < 1190424851 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so that you can encounter bottoms and not 'bottom' out, but you don't have to build as many thunks < 1190424887 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :but the antagonistic compiler is somewhat more amusing of a rule, since it hasn't been used as far as i can tell ;) < 1190424887 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :"build thunks"? < 1190424891 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :not sure what that means :P < 1190424931 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :a thunk is the unevaluated computation that when forced will give you the answer and overwrite it self with the answer, so that call-by-name evaluation works < 1190424946 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :yeah, just checked < 1190424952 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :er call-by-need < 1190424964 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1190424986 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :call-by-name has thunks, call-by-need makes the thunk remember the answer it gave by self-modifying < 1190424994 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so called 'memothunks' =) < 1190424997 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :now that i come to think of it, lazy evaluation is pretty trivial to implement. < 1190425006 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1190425041 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :pattern matching just checks to see if what you have is a thunk if so it tells the thunk to evaluate which makes sure the outermost constructor is a value, then you can inspect it < 1190425060 0 :ihope_!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1190425071 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :in the ghc haskell compiler it does so by making everything into a 'thunk' with a function for the constructed values that just returns itself < 1190425105 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :er < 1190425157 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :okay, i got what you said < 1190425169 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :1½ minutes of lag in my head < 1190425186 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so basically a list 'cons' cell is a [Cons, x, xs] where cons is a pointer to a function that happens to just return the 'thunk' [Cons, x, xs] that it was given, so to force it you call the function at the start of the thunk and you inspect the value of the tag that it returns in the first position. < 1190425204 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :that way if you had a function like < 1190425212 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :repeat n = Cons n (repeat n) < 1190425220 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :then you'd encounter a thunk like < 1190425264 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :[Repeat, n] where Repeat was a function that takes that and constructs [Cons, n, [Repeat, n ]] < 1190425279 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and hands it back for inspection < 1190425316 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :its the simplest model for compiled lazy evaluation i know < 1190425321 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :and when pattern matching occurs, it evaluates until there's an actual constructor as outermost < 1190425336 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :becoming [Cons, n, [Repeat, n ]], where repeat is [Cons, n, [Repeat, n ]] < 1190425344 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :or? < 1190425374 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah although that pattern matching routine doesn't have to loop explicitly because by calling that function which calls whatever other functions it has to call to reduce to 'weak head normal form' the recursion is implicit. < 1190425394 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :it just calls the one function and that thing takes care of all the details, but you have the right idea < 1190425421 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :you mean the actual caller will not have to care about the fact it has lazied out? < 1190425441 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i mean, it doesn' have to know the object it's matching is actually a thunk < 1190425448 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*doesn't < 1190425456 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm... < 1190425458 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :more or less, it knows it has to call the function that is in the first slot of the value it was given no matter what, then it can safely inspect the first value in the result that returns. < 1190425491 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190425504 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and laziness proceeds like that, outside-in. < 1190425565 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i guess you can do the tree rewriting in any order as long as the result is as value-like as necessary < 1190425574 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :adding speculation muddies the waters a bit, you track a speculation depth cap, and rather than generate a thunk in the first place you try to run through it eagerly, but if you hit the cap you abort and return the thunk. < 1190425598 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :well yeah, but isn't that just optimization? < 1190425607 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :if you hit the cap too many times in the same place, then for performance reasons you disable speculation on that code point. < 1190425607 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190425628 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the semantics remain lazy, but evaluation can proceed eagerly in a lot of cases < 1190425644 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1190425672 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :if there are no infinite sequences and no side-effects, lazy evaluation and strict evaluation have no difference, am i right? < 1190425687 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :prolly not, but i don't know the difference. < 1190425690 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the 'evil compiler' version of it, just allows me to reduce outside-in or inside-out as i choose < 1190425697 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i mean, as far as the programmer is concerned.. < 1190425700 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :you're right < 1190425712 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :okay, good < 1190425717 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :they only have space and time efficiency tradeoffs in that case < 1190425727 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :which i think is perfectly reasonable to give the compiler more control over < 1190425734 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1190425743 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :no infinite loops and no side effects < 1190425764 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm... < 1190425773 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1190425775 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :infinity = infinity + 1 < 1190425782 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :sorry, i'm very slow right now < 1190425782 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :if you ever evaluate infinity you never stop < 1190425792 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :yes, indeed, i failed a bit there < 1190425798 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i blame the wine and the time. < 1190425826 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :that's obvious, though < 1190425833 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :but in the absence of general recursion and general corecursion you can't tell the two apart without side effects < 1190425855 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190425922 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :did you understand the oklotalk code btw? < 1190425924 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :productive corecursion is valid in a lazy setting, but not a strict-setting though, so the "devil's advocate" compiler design above might make productive corecursion into something that bottoms out and never returns < 1190425951 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :more or less, modulo the builtins < 1190425988 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :a few built-ins there indeed < 1190426011 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :argh, that row-check... < 1190426014 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :productive corecursion being anything that you know returns an outermost constructor in a finite amount of time, the lazy counterpart to well-founded recursion which says your functions return < 1190426042 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :mm yeah < 1190426047 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i do know corecursion < 1190426062 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :(i learned the term earlier today, but anyway :P) < 1190426067 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :haahahah < 1190426078 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :talking to Cale? =) < 1190426101 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm... don't know what that is :) < 1190426102 0 :ihope!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1190426124 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ah he's a guy over on #haskell who is fond of that terminology < 1190426146 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :read an article @ neighborhood of infinity < 1190426156 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :oh, haven't talked to him < 1190426180 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ok, dan piponi, yeah he's fond of that stuff too < 1190426192 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1190426221 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :oerjan also once mentioned corecursion some months ago < 1190426230 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i didn't bother to check then < 1190426235 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :what that was, that is < 1190426260 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i've been obsessed with comonads and codata for a while, so corecursion naturally follows ;) < 1190426276 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :even have comonad.com =) < 1190426277 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm... comonads sounds dangerous. < 1190426284 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :you have taht? < 1190426285 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*that < 1190426289 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190426312 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :been there < 1190426333 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i think < 1190426350 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :comonads aren't that weird. monads are easy to put things into but hard to deconstruct, they are like a container that won't let you in to get at the value you injected unless you follow some rigorous protocol. < 1190426379 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1190426383 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand comonads are easy to deconstruct, fragile even, you can always remove a comonad from the value it contains, but they may be harder to put things in. < 1190426389 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :"they" there, which does it refer to? < 1190426397 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :monads < 1190426400 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1190426405 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :how well do you know monads? < 1190426406 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :oh, you continues that: ) < 1190426413 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :not that well. < 1190426430 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i guess i know what they are, but their usage is just too complicated < 1190426461 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*continued < 1190426474 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :I think they're like any other tricky concept, really. < 1190426505 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :a monad just basically says that i can take a value of some basic type and always transform that value into a more complicated type. i.e. if i have a value of type a. i can always transform that into a function of type e -> a by just returning a constant function that ignores its argument < 1190426508 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Look at it for a while, ask to see it in different directions, and either it suddenly clicks or slowly falls into place. < 1190426536 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Say that you don't understand something, and someone will declare that it's easy to understand and give you one way to understand it :-) < 1190426537 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :or, if i have a value of type a, i can always generate a function of type s -> (a,s) which just copies the argument through to the second position of the result < 1190426581 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and then there are rules for taking functions that worked on your previous 'a' and getting a function that works on e -> a or s -> (a,s) < 1190426616 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so it was 'easy' to inject a value into it, but we have to follow some protocol to get the value out, we have to supply an e or an s in either case, and in the second case we had to strip off the superfluous (,s) term, etc. < 1190426626 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ihope_: i don't have to say that, the explanation follows anyway ;) < 1190426634 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :some monads you may not be able to 'strip off' at all < 1190426689 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand a monad is something that if given you could discard the candy wrapper if you wanted to and always extract the value without any work, but which still provide that framework of how to extend a function for the basic value to handle a comonadically wrapped value. < 1190426706 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so i could always treat the pair (e,a) as a by just ignoring the (e,) part < 1190426743 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so i can always rip off that 'context' comonad as that is called, i don't have to supply additional information like i did with the reader monad e -> a or the state monad s -> (a,s) above < 1190426795 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i guess i have to admit i ain't exactly following :) < 1190426814 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ACTION stops his 'easy to understand and giving you one way to understand it' explanation =) < 1190426825 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1190426832 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i really tried! < 1190426872 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i think i lack the part of the brain that manages monads < 1190426876 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i think of monads as a container you can put something in, and a way to take a container of containers and flatten it out to get a container. so for lists you can always take a value and make a singleton list out of it, and you can always take a list of lists and concatenate them to get a single list < 1190426925 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :the problem is i know that much, but monads seem to have something much deeper in them. < 1190426954 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :you can always take a value and transform it into a function that ignores its argument, turning a into e -> a, and you can take an e -> (e -> a) and transform that into a function of type e -> a by using your argument twice < 1190426977 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :whereas a comonad goes the other way < 1190426983 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190426985 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Oh, monads are really no harder than, um... < 1190427001 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :...I can't think of anything I'm trying to understand but can't. < 1190427004 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :"you can take an e -> (e -> a) and transform that into a function of type e -> a by using your argument twice" << sure about this? < 1190427010 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :you can always extract an a from (e,a) and you can duplicate the context, you can always generate (e,(e,a) given (e,a) but with just an a you cant generate (e,a) for an arbitrary e. < 1190427020 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :join f x = f x x < 1190427029 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :join :: (e -> (e -> a)) -> e -> a < 1190427052 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :"by using your argument twice" < 1190427056 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1190427139 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the monads as containers analogy leads to a sort of 'comonads as candy wrappers with a possible valuable prize' analogy, you can get rid of the comonad, but it might have value if you kept it around, it may provide you with something you can't do without it. < 1190427200 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :in that case it provides you with the ability to access the value of e. discarding the comonadic wrapper discards that value. < 1190427261 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i guess i get that < 1190427262 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and if you want to bake your brain you can analyze the fact that (e,a) and e -> a provide the same functionality and go off into category theory and make grandiose statements about how 'Hom and Prod' are adjoint functors so those two things do the same thing monadically and comonadically, etc. and then you can go get a job on the mathematics faculty somewhere ;) < 1190427332 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm :) < 1190427359 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :actually that notion comes probably a bit easier through the concept of currying < 1190427392 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :(a,b) -> c can always be rewritten as a -> (b -> c) sort of witnesses the connection between , and -> < 1190427423 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :hmm, (a,b) is not a tuple then? < 1190427440 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :that connection implies the existence of the (,)e comonad given the (->)e monad and vice versa < 1190427445 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :it is < 1190427485 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :you can always rewrite a function that takes a pair of values as a function that takes one of them and returns a function that takes the other and returns the result of calling the function on the pair of the values it now holds < 1190427507 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1190427518 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :but different call syntax in haskell < 1190427523 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :curry f x y = f (x,y) < 1190427533 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :uncurry f (x,y) = f x y < 1190427555 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :though technically the haskell version lazily handles the latter pattern < 1190427574 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :uncurry f xy = f (fst xy) (snd xy) < 1190427593 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1190427595 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190428149 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ACTION takes a quick sleep < 1190428152 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :-> < 1190430055 0 :ihope_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1190431196 0 :navaburo!unknown@unknown.invalid PART #esoteric :? < 1190432169 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Any thoughts on PSOX < 1190432174 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :? < 1190432186 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :? < 1190433076 0 :hieronymus310!n=hieronym@pool-71-104-92-207.lsanca.dsl-w.verizon.net JOIN :#esoteric < 1190433128 0 :hieronymus310!unknown@unknown.invalid PRIVMSG #esoteric :Please add 2 and 3 together < 1190433168 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Is '$ yes no | rm -r /tmp' a safe thing to do? < 1190433194 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :hieronymus310, LOCATION_ERROR: IRP_NOT_SUPPORTED_IN_THIS_CHANNEL__SEE_TOPIC < 1190433218 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :sgeo: well, you don't usually want to remove the /tmp folder entirely < 1190433230 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :err < 1190433236 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION already did it :/ < 1190433248 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Imean, not everything was deleted.. < 1190433268 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :OSHI--12.5MB from right after, down to 4.6MB < 1190433293 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :of total freespace < 1190433316 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :edwardk, hm? < 1190433317 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the worry would be if it succeeded entirely and /tmp was gone (which probably wouldn't work on most unix implementations since it usually is mounted) then mktmp and those calls don't know where to dump their files < 1190433341 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :It didn't succeed entirely < 1190433344 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :but the contents of /tmp you can blow away until your heart is content ;) < 1190433349 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ya < 1190433357 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :that was why i was qualifying my response =) < 1190433384 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION desperately needs the space < 1190433385 0 :hieronymus310!unknown@unknown.invalid PART #esoteric :? < 1190433416 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :WTF 4.0KB free? < 1190433472 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Make that 0bytes < 1190433497 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has exactly 0bytes free on / < 1190433523 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :thats generally a bad place to be < 1190433530 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :is /var in your / partition? < 1190433555 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Probably, why? < 1190433567 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :if so you might be able to get some room by nuking stuff out of /var/log < 1190433585 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :9.1MB of stuff in /var/log < 1190433604 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :how much room is on this machine in total anyways? < 1190433667 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Um, howdoItell? < 1190433685 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :'df' < 1190433701 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :that'll tell you what partitions you have how full they are and how big they are < 1190433712 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :/dev/sda7 136188044 130653632 24 100% / < 1190433737 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :oh, 24KB freew < 1190433755 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I think all I did was close a text editor < 1190433769 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and you have no separate user partition or anything? < 1190433782 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :And decreasing? < 1190433783 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :just like linux installed on a workstation in one big fat partition? < 1190433788 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Yes < 1190433820 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :do you know where the space went or is that just a black box at this point? < 1190433859 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :A dir with MIDIs converted to OGGs, all Futurama seasons, a bunch of SWFs, a bunch of ISOs, and more stuff probabky < 1190433869 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ah =) < 1190433910 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :was worried it was just some process filling your drive with drek, now i realize the user is the process in question ;) < 1190433918 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1190433984 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :~/music/midi/all is 2.5GB < 1190433991 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Not a lot, in relation to, say, ISOs < 1190434019 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heh my solution is usually to run down and buy another 500 gig drive and add it to the machine =) < 1190434089 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is pushing about 2.5TB on his desktop machine these days and just realized it. < 1190434130 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :mostly virtual pc images, etc. < 1190434518 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Down to 0b again < 1190434531 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :/dev/sda7 136188044 130653656 0 100% / < 1190434541 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Why are the numbers different? < 1190434554 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ACTION watches sgeo find space episode by precious episode... < 1190434561 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1190434574 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :because some percentage of the drive space is reserve for root < 1190434585 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION will probably delete some ISOs < 1190434590 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :er reserved < 1190434613 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the justification is that if you have NO drivespace left on the root partition then root can't shuffle things around to fix a problem < 1190434666 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :How much is reserved (too lazy to do simpleish math right now) < 1190434701 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :its like 10% traditionally, but the numbers are probably changed by now, and remember root has some files on the drive so some of that reserve is used < 1190434744 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :But I can store more stuff by becoming root? Yipee! < 1190434746 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :(j/k) < 1190434789 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Buh-bye openSUSE-10.2 < 1190434801 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :1.7GB < 1190434802 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah, though if you get to the point you are currently at you risk not being able to mount the drive in the event that you have to fsck it or lack the room to record the transaction log, etc. < 1190434834 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :You mean, if I use up root's space? < 1190434843 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1190434857 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :What about LiveCDs? < 1190434869 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :on a drive that big you should be able to lower the reserve some though < 1190434888 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :they don't risk corruption on themselves because they are an iso image, they don't write back to themselves < 1190434904 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :they make a ramdisk or whatever and load up in that if it corrupts there is nothing to fsck-up =) < 1190434906 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Incidentally, I wouldn't have been able to use the openSUSE LiveDVD anyway.. can't burn DVDs, and only have 512MB so can't emulate.. < 1190434928 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :woohoo 1.7GB freed < 1190434943 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Um, how do I peek into a tgz file? < 1190434954 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :tar tvfpz foo.tgz < 1190434958 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I have 10GB locked up in a file called someisos.tgz < 1190434962 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ty < 1190434973 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I made that file after running out of space before < 1190435027 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :This is taking a while < 1190435033 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :There's Linux XP, which I remember hating < 1190435056 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION likes linux mint, although I should delete the 3.0 iso < 1190435085 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :you might consider just tunefs'ing to lower the reserve to like 5-6% < 1190435105 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :or whatever it is in your distro < 1190435150 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION decides he will delete the file after recording the filenames < 1190435157 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Thank you so very much BTW < 1190435162 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :no problem < 1190435175 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :sitting here trying to get something to compile anyways ;) < 1190435175 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :hmm Xandros 302-OCE is in there.. < 1190435191 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :And a Linspire ISO < 1190435257 0 :edwardk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1190435275 0 :edwardk!n=edwardk@pdpc/supporter/base/edwardk JOIN :#esoteric < 1190435280 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :re edwardk < 1190435282 0 :kwertii!unknown@unknown.invalid QUIT :Client Quit < 1190435284 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :pidgin crashed < 1190435287 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1190435289 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :anyways < 1190435302 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :try: tune2fs -m 5 /dev/sda1 (or whatever drive it was) < 1190435308 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and see what that does for you < 1190435318 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION isn;t sure he wants to adjust that.. he's reclaiming space.. < 1190435326 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I now have 3.1GB free < 1190435353 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :5% is safe, the traditional 10% threshold was set back in the 10mb harddrive era ;) < 1190435404 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1190435408 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :No oerjan < 1190435410 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heya oerjan < 1190435416 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Noerjan < 1190435426 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :(no=hi) < 1190435493 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hello < 1190435576 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ACTION notes that apparently linux distros switched to 5% a while back. < 1190436724 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION notes the discussion about a=b=c in plof < 1190436767 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it would have been interestingly weird if a=b was equal to b as lvalue < 1190436841 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unfortunately plof is not esoteric ;) < 1190436876 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION mentions GregorR, just in case he didn't see that. < 1190437588 0 :wooby!n=wooby@cpe-069-133-156-063.nc.res.rr.com JOIN :#esoteric < 1190437626 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION deletes a 10GB file < 1190437658 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :was there a *slurp* sound? < 1190437725 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Sadly, no < 1190437735 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :My comp seemed to freeze for two seconds, though < 1190437746 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1190437763 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :probably /dev/null has some indigestion problem. < 1190440005 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1190440008 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :G'night all < 1190440026 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION will probably add some stuff to seek through File Descriptors next time he works on PSOX < 1190440976 0 :Sgeo!unknown@unknown.invalid QUIT :"Ex-Chat" < 1190444184 0 :edwardk!unknown@unknown.invalid PART #esoteric :? < 1190445230 0 :puzzlet_!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1190445941 0 :oerjan!unknown@unknown.invalid QUIT :"leaving" < 1190447999 0 :clog!unknown@unknown.invalid QUIT :ended < 1190448000 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1190452967 0 :wooby!unknown@unknown.invalid QUIT : < 1190455350 0 :SEO_DUDE85!unknown@unknown.invalid QUIT :Remote closed the connection < 1190460859 0 :SEO_DUDE85!i=Deee@gateway/tor/x-0e755426d6d76210 JOIN :#esoteric < 1190462090 0 :jix!n=jix@dyndsl-080-228-178-227.ewe-ip-backbone.de JOIN :#esoteric < 1190463823 0 :ihope_!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1190463829 0 :ihope_!unknown@unknown.invalid NICK :ihope < 1190470802 0 :Tritonio!unknown@unknown.invalid QUIT :Remote closed the connection < 1190472342 0 :sebbu2!unknown@unknown.invalid NICK :sebbu < 1190473341 0 :jix!unknown@unknown.invalid QUIT :Nick collision from services. < 1190473351 0 :jix!n=jix@dyndsl-080-228-187-220.ewe-ip-backbone.de JOIN :#esoteric < 1190473480 0 :UnrelatedToQaz!n=chatzill@host81-159-24-90.range81-159.btcentralplus.com JOIN :#esoteric < 1190474299 0 :UnrelatedToQaz!unknown@unknown.invalid QUIT :"ChatZilla 0.9.78.1 [Firefox 2.0.0.7/2007091417]" < 1190475484 0 :UnrelatedToQaz!n=chatzill@host81-159-24-90.range81-159.btcentralplus.com JOIN :#esoteric < 1190475489 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :hey all < 1190476603 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ello. < 1190477031 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :I'm trying to learn Unlambda at the moment. < 1190477290 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1190477714 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :hey < 1190478019 0 :edwardk!n=edwardk@pdpc/supporter/base/edwardk JOIN :#esoteric < 1190478031 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ACTION waves hello. < 1190478214 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1190478804 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :heya < 1190478965 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ello. < 1190478986 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It's another one of those greetings-only conversations. < 1190478999 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hey all, ello, hi, hey, waves hello, hi, heya, ello. < 1190479736 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :Can we not shoehorn in a topic, then? < 1190479766 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I think we can manage. < 1190479772 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Esoteric programming language discussion | FORUM AND WIKI: esolangs.org | CHANNEL LOGS: http://ircbrowse.com/cdates.html?channel=esoteric | IRP in #irp < 1190479795 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :All aspects of mathematics | www.freenode-math.com/ | Don't ask to ask. Ask. | Guidelines: www.freenode-math.com/index.php/Guidelines | Writing maths on IRC: http://xrl.us/ubdh | LaTeX paste: http://mathbin.net | Using mbot: www.freenode-math.com/index.php/Mbot | Off-topic? #not-math (this is not a joke) < 1190479796 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :Alright then. < 1190479807 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :And I think we have some room for actual content, too. < 1190479808 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :Did you know you can construct logic gates using dominoes? < 1190479822 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I've been trying to do that for a while, actually. < 1190479882 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :For some, though, you have to have an input and a process channel. < 1190479887 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :Like NOT for example. < 1190479895 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Though my logic gates would be more like "holes" that can be filled with dominoes if and only if a certain thing is true. < 1190479922 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :That's a curious way of doing it. What do you mean, exactly? < 1190479977 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'll pastebin a diagram sort of thing. < 1190480009 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :OK then. < 1190480063 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :I can do my NOT gate in ASCII, thankfully. < 1190480149 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :heh dominoes, gotta get some of those < 1190480150 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :http://pastebin.ca/707096 < 1190480167 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i've been thinking of making a computer using water and pipes < 1190480209 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Each hole is really a logic gate of its own, and putting two holes next to each other connects them. Each connection can be either filled or empty, and each hole must have exactly one filled connection. < 1190480237 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: haven't we all? :-) < 1190480273 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i'm sure we have, it's just my current dream :) < 1190480279 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :ACTION bangs his head on the keyboard < 1190480314 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :No wonder I'm so confused. That diagram refers to dominoes laying down; my logic gates use dominoes standing up. < 1190480342 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :I'll append something to yours to show you what I mean. < 1190480381 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i don't know much about physics, but you'd think water would work almost the same in a circuit as electricity < 1190480395 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't have the magnetism stuff electricity does, obviously < 1190480409 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i don't exactly know how important that is in a computer < 1190480452 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :computers are dc internally, right? < 1190480471 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :then there shouldn't be much magnetism involved < 1190480499 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i should start reading about this stuff... school hasn't taught me shit :< < 1190480546 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :Oh. It's at http://pastebin.ca/707100 < 1190480580 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :At the bottom < 1190480640 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i don't get the # notation < 1190480692 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: each # represents a hole the size of half a domino. < 1190480719 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :ACTION attempts to build a stick bomb out of pencils: http://en.wikipedia.org/wiki/Stick_bomb < 1190480735 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I expect that pencils are much too stiff to actually do this. < 1190480840 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :Anything's worth a try. < 1190480865 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :http://www.lunatim.com/kinart/videos/videos.htm omg < 1190480897 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Mm, testing a pencil shows that it's impossible to do a certain simple weave. < 1190481020 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :The problem with using a domino run for computing < 1190481031 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :is that it can't be reset easily. < 1190481051 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :Unless you can use magnets somehow. < 1190481128 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :http://www.rebelscience.org/Crackpots/notorious.htm < 1190481132 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :hehhe < 1190481153 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I would laugh more, but he goes on too much abt why i am wrong and won't admit it. < 1190481159 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :He does that generally. < 1190481490 0 :Tritonio!n=Tritonio@150.140.226.66 JOIN :#esoteric < 1190481854 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :"First of all, dt/dt does not equal 1 second per second. The units cancel out." < 1190482294 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It can't be said that it doesn't equal 1 second per second, but "1" is indeed probably a better way of putting it... < 1190482968 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :a more interesting vector is found if you multiply that one by the mass < 1190482981 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :you get a mass-and-momentum vector < 1190483106 0 :Arrogant!n=Arrogatn@254.orlando-09rh15-16rt.fl.dial-access.att.net JOIN :#esoteric < 1190483288 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i can has drain! < 1190483344 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :?? < 1190483595 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :http://abacus.kwzs.be/~bsmntbombdood/drains/il-7.jpg <--- me < 1190483840 0 :g4lt-sb100!unknown@unknown.invalid PRIVMSG #esoteric :MY EYES!!!! < 1190483844 0 :ehird`!n=ehird@user-5af069d2.wfd101.dsl.pol.co.uk JOIN :#esoteric < 1190483922 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Trippy. < 1190483983 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :too bad it's so grainy < 1190484813 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :g'bye everyone < 1190484821 0 :UnrelatedToQaz!unknown@unknown.invalid PART #esoteric :? < 1190484897 0 :Arrogant!unknown@unknown.invalid QUIT :"Leaving" < 1190488418 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has dinner. < 1190489320 0 :UnrelatedToQaz!n=chatzill@host81-129-125-74.range81-129.btcentralplus.com JOIN :#esoteric < 1190489424 0 :UnrelatedToQaz!unknown@unknown.invalid PRIVMSG #esoteric :Wow. I can't believe that all that's happened since I've been gone is that SimonRC has had dinner. < 1190489789 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is finally reading german < 1190489905 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :cool, i now have proof for something i claimed to my german teacher in the 5th grade < 1190489921 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :she would be so embarrassed if i showed this to her < 1190489995 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :(because who wouldn't remember a 7-year-old conversation vividly.) < 1190490347 0 :sebbu2!n=sebbu@ADijon-152-1-86-91.w81-49.abo.wanadoo.fr JOIN :#esoteric < 1190491495 0 :sebbu!unknown@unknown.invalid QUIT :Connection timed out < 1190492142 0 :UnrelatedToQaz!unknown@unknown.invalid QUIT :"ChatZilla 0.9.78.1 [Firefox 2.0.0.7/2007091417]" < 1190492460 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: what is it? < 1190493944 0 :oblivion2k!n=chatzill@c-71-193-255-133.hsd1.wa.comcast.net JOIN :#esoteric < 1190493975 0 :oblivion2k!unknown@unknown.invalid QUIT :Client Quit < 1190493985 0 :oblivion2k!n=chatzill@c-71-193-255-133.hsd1.wa.comcast.net JOIN :#esoteric < 1190494646 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :that germans occasionally way "zwo" for 2. < 1190495948 0 :ihope_!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1190496972 0 :ihope!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1190502602 0 :edwardk!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1190502801 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1190504144 0 :bsmntbombdood!i=gavin@rrcs-67-52-47-67.west.biz.rr.com JOIN :#esoteric < 1190504900 0 :ihope_!unknown@unknown.invalid QUIT :Connection timed out < 1190504961 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer)