00:00:21 <alise> *Main> System.IO.UTF8.putStrLn $ pretty idL
00:00:21 <alise> (λα : (α : ★) → (β : α) → α. α)
00:00:30 <alise> *Main> System.IO.UTF8.putStrLn $ pretty consL
00:00:31 <alise> (λα : (α : ★) → (β : ★) → (γ : α) → (δ : β) → (ε : ★) → (θ : (ζ : α) → (η : β) → ε) → ζ. (λβ : (ι : ★) → (κ : θ) → (μ : ι) → (ν : ★) → (π : (ξ : θ) → (ο : ι) → ν) → ξ. (λγ : (ρ : ο) → (σ : π) → (τ : ★) → (χ : (υ : ο) → (φ : π) → τ) → υ. (λδ : (ψ : φ) → (ω : ★) → (γ′ : (α′ : υ) → (β′ : φ) → ω) → α′. (λε : (δ′ : ★) → (η
00:00:31 <alise> ′ : (ε′ : ω) → (ζ′ : α′) → δ′) → ε′. (λζ : (κ′ : (θ′ : γ′) → (ι′ : δ′) → η′) → θ′. ζ γ δ))))))
00:00:34 -!- MizardX- has joined.
00:01:51 -!- adam_d_ has quit (Quit: Leaving).
00:03:14 -!- MizardX has quit (Ping timeout: 276 seconds).
00:03:33 -!- MizardX- has changed nick to MizardX.
00:07:05 <alise> MissPiggy: in a dependent lang the function arguments to church numerals don't have to be a->a do they
00:07:13 <alise> they just have to be (something which includes b)->b
00:07:24 <alise> Sgeo: prettifies a dependently-typed lambda calculus AST
00:07:38 * Sgeo is already confused
00:08:46 <coppro> Sgeo: just go along with him
00:09:29 <oerjan> well that's a subtype of b->b isn't it
00:11:04 <alise> *Main> System.IO.UTF8.putStrLn $ pretty (church 0)
00:11:04 <alise> (λα : (α : ★) → (γ : (β : α) → α) → (δ : α) → α. (λβ : (ζ : (ε : δ) → δ) → (η : δ) → δ. (λγ : (θ : ε) → ε. γ)))
00:15:11 <alise> Something's broken...
00:18:22 <alise> *Main> System.IO.UTF8.putStrLn $ pretty (church 50)
00:18:22 <alise> (λα : (α : ★) → (γ : (β : α) → α) → (δ : α) → α. (λβ : (ζ : (ε : δ) → δ) → (η : δ) → δ. (λγ : (θ : ε) → ε. (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β (β γ)))))))))))))))))))))))))))))))))))))))))))))))))))))
00:21:21 <alise> *Main> System.IO.UTF8.putStrLn $ pretty trueL
00:21:21 <alise> (λα : (α : ★) → (β : α) → (γ : α) → α. (λβ : (δ : γ) → (ε : γ) → γ. (λγ : (ζ : δ) → δ. β)))
00:21:21 <alise> *Main> System.IO.UTF8.putStrLn $ pretty falseL
00:21:21 <alise> (λα : (α : ★) → (β : α) → (γ : α) → α. (λβ : (δ : γ) → (ε : γ) → γ. (λγ : (ζ : δ) → δ. γ)))
00:22:01 -!- BeholdMyGlory has quit (Read error: Connection reset by peer).
00:22:25 <alise> "As an alternative to the encoding using Church pairs, a list can be encoded by identifying it with its right fold function."
00:22:40 <alise> can you define foldl with foldr?
00:24:55 <oerjan> MissPiggy: if a list is defined as its foldr...
00:25:10 <alise> defining things as their natural functions is a nice thing
00:25:20 <alise> like Maybe a is b -> (a -> b) -> b
00:25:28 <alise> Either a b is (a -> c) -> (b -> c) -> c
00:25:33 <alise> (a,b) is (a -> b -> c) -> c
00:25:40 <oerjan> it's one of those anamorphism or catamorphism things
00:25:43 <alise> oerjan: what's the definition btw?
00:25:51 * oerjan cannot remember which is which
00:26:26 <alise> foldl' f b0 as = foldr (\a k b -> k (f b a)) id as b0
00:26:51 <alise> that's what the LtU person called it
00:26:55 <alise> not for strictness afaik
00:27:39 <alise> i'm beginning to realise why nobody uses the dependently-typed lambda calculus as a core language
00:27:44 <alise> (it's frickin' verbose and opaque!)
00:28:09 <MissPiggy> you cant encode data types by the folds
00:28:20 <alise> you can represent a list as its foldr
00:28:42 <oerjan> sure you can. it's how it's done in System F iirc
00:28:48 <alise> map, foldl, head, tail, ... can all be implemented with juts foldr
00:29:03 <alise> also: http://en.wikipedia.org/wiki/Church_encoding#Higher-order_function
00:29:50 <alise> MissPiggy: also is it just me or does prolog solve the expression problem?
00:30:10 <oerjan> prolog has no static types.
00:30:20 <oerjan> without which, it is much easier
00:30:50 <MissPiggy> I don't think there's any point me linking to a research problem that proves what I am saying if you already know that I am wrong
00:31:23 <alise> MissPiggy: well, do link
00:31:34 <alise> but i'm fairly sure oerjan and wikipedia, and facts back me up on this
00:32:13 <MissPiggy> http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.32.4355
00:32:45 <oerjan> note that this foldr encoding of lists applies to when lists have all elements the same type, like in haskell
00:32:50 <alise> MissPiggy: i'm just talking about lists
00:33:20 <alise> i don't think you understand what i'm saying
00:34:03 * coppro knows how to bug alise... hehehe
00:34:31 <alise> MissPiggy: so, are you saying that map isn't implementable with just foldr? what about foldl? head? tail?
00:34:41 <coppro> by insisting that C# solves the Expression Problem
00:34:49 <MissPiggy> you can do whatever the fuck you want in haskell or untyped lambda calculus or wikipedia
00:35:53 <alise> MissPiggy: because you are being opaque about what you are actually trying to state to me
00:36:07 <alise> coppro: can you add new methods and have them work on existing members of a type hierarchy?
00:36:20 <coppro> alise: Yes, they're called extension methods
00:36:27 <MissPiggy> I think it's more a case of you already have your mind made up
00:36:32 <alise> they're just glorified functions, but okay
00:36:38 <alise> that doesn't really count :P
00:36:47 <alise> MissPiggy: I haven't and I'm trying to get the information out of you, dammit
00:37:02 <MissPiggy> and you seemed to read an entire research paper in the amount of time it takes to read its title
00:37:13 <oerjan> MissPiggy: um so whether you can define a data type using a foldr might depend on your type system. what does that have to do with what we are saying?
00:37:22 <coppro> but does the semantic difference of what is and isn't a member of a type matter?
00:37:23 <alise> MissPiggy: i read the abstract
00:37:29 <alise> usually that summarises what the paper concludes.
00:37:35 <coppro> other than the verbosity
00:37:56 <alise> coppro: access to private fields
00:38:24 <oerjan> it's equally clear that in the System F type system people _have_ defined list types as their corresponding fold types
00:38:33 <MissPiggy> this thread of discussion has got murky and clouded with assumptions so lets clear it and we can start again
00:39:00 <coppro> alise: that isn't required
00:39:09 <alise> coppro: well nothing is required
00:39:17 <alise> the expression problem doesn't reduce a language's power
00:39:21 <alise> it reduces its expressivity
00:39:45 * coppro wonders why the idiot decided to refer to it as being solved, when it really isn't
00:39:59 <coppro> I'd argue prototype systems come closest to solving it
00:40:09 <alise> The author of the .txt file?
00:40:16 <alise> You just called Wadler an idiot.
00:40:50 <alise> Firstly, Wadler is a great computer scientist who came up with using monads in programming and many aspects of Haskell's design.
00:40:51 <coppro> he was an idiot when he decided to refer to it as being solved
00:41:00 <alise> Secondly, he didn't. He presented *one solution*.
00:41:11 <alise> It allowed you to add both rows and columns.
00:41:13 <alise> That is a solution of the problem.
00:41:21 <alise> It may not be the best or even a good solution, but it is a solution.
00:41:40 <coppro> in that case I contend that C# has solved it
00:42:53 <coppro> I contend that those do not matter
00:43:34 <alise> It is a problem of convenience and expressivity, not power.
00:43:43 <alise> So either obey all the rules or obey none.
00:43:54 <alise> If it wasn't about private fields, *every* OOP language would solve it.
00:44:04 <alise> (In an awful, kludgey way, of course.)
00:44:21 <coppro> you have to "add new cases to the datatype and new functions over the datatype"
00:44:24 <MissPiggy> Summary: In lambda caculus you can define data types (including higher order ones like the syntax of lambda caclculus itsself using the Scott encoding, in Haskell you can't use this because it doesn't typecheck but data types are isomorphic to the folds (but the algorithmic complexity of functions you define on the fold version is limited), in dependently typed calculus you can't use the fold encoding because you can't do induction on these types.
00:44:28 <alise> coppro: Anyway, if you add an extension method to a subclass, do you have to add it to all superclasses too?
00:44:43 <MissPiggy> Summray: In untyped lambda caculus****
00:44:45 <alise> If you add an extension method to a superclass, do you have to make separate definitions for each subclass? If not, then it is not solved.
00:44:48 <coppro> alise: Actually, that I'm not sure about, and would be fatal to the Expression Problem
00:44:54 <coppro> but access to private members is not fatal
00:45:30 <coppro> Interestingly enough, prototype systems take it one step further
00:45:55 <augur> i just spent about half an hour to an hour shoveling snow
00:46:22 <augur> GRAR UPPER BODY STRENGTH
00:47:11 <alise> coppro: But yes, I just realised that's why it doesn't solve it.
00:47:13 <coppro> prototype systems let you define new functions over individual objects
00:47:20 -!- Wareya has quit (Read error: Operation timed out).
00:47:22 <alise> coppro: In a real-life table of numbers,
00:47:24 <augur> i'd shover your snow ;o
00:47:28 <MissPiggy> I typed that all out and you're not even going to read it?
00:47:31 <alise> you can't just add a column, put one number in, and pretend all the rest are that number
00:47:37 <alise> You have to fill in each separately, considering each row
00:47:59 <alise> MissPiggy: I read it
00:48:10 <alise> MissPiggy: why do you assume I did not?
00:48:32 * coppro motions quietly in the direction of Python
00:48:33 <alise> coppro: admittedly, normal OOP systems fail at this with rows too by inheriting methods; but that's less bad, since it's just one row being affected
00:48:41 <alise> rather than a nuclear holocaust of oppression as in adding a column
00:49:16 <coppro> alise: why does inheriting methods screw it up?
00:49:36 <alise> with the column fuckup you enter one and it magics into the other rows
00:49:41 <alise> but with method inheritance, there's no entering+copying
00:49:44 <alise> it's just regular inheritance
00:50:10 <alise> Incidentally, language implementations with a solution of the expression problem are godly in their ease-of-organisation.
00:50:41 <alise> Adding a new construct? You can do it in one module: add a row to the AST type, implement all the columns (like "compile", "prettyprint"), add it to the parser, and you're done.
00:50:47 <coppro> (note: I know it doesn't solve it. I'm asking you to describe why ont)
00:50:47 -!- Wareya has joined.
00:50:58 <MissPiggy> alise because you didn't even argue
00:51:00 <alise> It becomes organised by feature, not by phase.
00:51:09 <alise> MissPiggy: because you're probably right :P
00:51:18 <alise> coppro: Erlang isn't strongly-typed; mu
00:51:30 <alise> well. you can't add pattern-matching cases to a function in erlang, too
00:51:41 <alise> so even if you arbitrarily said {foo,2} is your new row, you can't fill in the columns
00:51:47 <coppro> yeah, it fails pretty hard
00:51:54 <coppro> funny for a functional language though
00:52:04 <coppro> adding new types is the easy bit
00:52:13 <alise> well, since it's not statically typed you can think of it as being able to add rows
00:52:18 <alise> it's just that you don't have to declare the rows you add :)
00:52:19 <oerjan> MissPiggy: well as i said it means it doesn't work in all type systems. perhaps it's a general problem for all dependent ones, i don't know.
00:52:30 <alise> it can add columns
00:52:32 <alise> but definitely not rows
00:52:35 <alise> like most functional languages
00:52:56 <alise> the expression problem only really makes sense with static typing
00:53:26 <alise> coppro: i was expecting you to be more "coool" at my thing about language implementation organisation :(
00:54:02 <alise> ha, i was just about to
00:54:32 <augur> are you considering designing a language which has a very easy solution to the expression problem?
00:55:04 <alise> augur: i'm considering including my nice syntax for my solution in my language
00:55:08 <alise> and making _all_ types tables
00:55:17 <alise> (although of course you have to export the table part to get it extensible by others etc)
00:55:46 <coppro> I wonder if the ability to subclass could be considered a requirement
00:55:58 <alise> no, just extend the type
00:56:10 <alise> subtyping in OOP extends the parent type, because you can use the subclasses as their parents
00:56:11 <coppro> or have type extensions of some sort
00:56:19 <alise> that's adding rows
00:56:26 <alise> adding row = extending type + filling in columns
00:56:35 <alise> adding column = making function + filling in rows
00:56:40 <coppro> with covariance or contravariance?
00:56:49 <augur> COMONADS AND CONTRAMONADS
00:56:57 <alise> coppro: I don't see why?
00:57:04 <coppro> alise: no, I mean which
00:57:09 <alise> er I was thinking of the wrong meaning of covariance :D
00:57:21 <alise> coppro: no, all the extensions are considered equal
00:57:29 <alise> subtyping in OOP just happens to do this, it isn't the optimal way
00:57:36 <alise> the optimal way is simply adding constructors to an existing data type
00:57:37 <coppro> subtyping in OOP is covariant
00:57:50 <alise> yes, but it doesn't matter for the expression problem
00:57:58 <alise> subtyping is a more general operation than what you need for the expression problem
00:58:05 <alise> with the expression problem, all are =
00:58:27 <coppro> what does one define as "adding new cases to the datatype"?
00:58:57 <alise> data Foo a = Abc Int a
00:59:01 <alise> data Foo a = Abc Int a | Bar a a
00:59:04 <alise> data Foo a = Abc Int a | Bar a a | Quux Int String
00:59:32 * alise realises something
00:59:43 <coppro> alise: Why doesn't simple composition not qualify?
00:59:46 <alise> my language probably has almost as many features that almost all other languages don't have, as common features
00:59:55 <alise> coppro: it does i think?
01:00:14 <coppro> well you just said that extension was necessary
01:00:22 <alise> well it has to extend the original type
01:00:23 <coppro> unless we were talking about different definitions of extension
01:00:28 <alise> because you fill in the columns
01:00:32 <alise> and you can't change the type of the columns
01:00:35 <coppro> it's an overloaded word I think
01:00:39 <alise> dependent types, mixfix operators, extensible syntax, partiality as an effect, heavy unicode usage,
01:00:47 <alise> solution to the expression problem,
01:01:05 <coppro> alise: what do you mean "fill in the columns"?
01:01:17 <alise> when you add a new row
01:01:24 <alise> you have to implement all the functions (columns)
01:01:40 <alise> again, think of a real table of numbers
01:01:49 <coppro> I don't think that's a requirement
01:01:49 <alise> if you add a row, you have to fill in the values for its columns
01:01:55 <coppro> since many functions can't be implemented
01:01:59 <alise> if you add a column, you have to fill in the values for its rows
01:02:03 <alise> coppro: all the functions previously added
01:02:12 * alise is beginning to suspect you don't understand the problem...
01:02:14 -!- coppro has left (?).
01:02:21 -!- coppro has joined.
01:02:27 <alise> did you miss anything?
01:02:29 <coppro> alise: I do understand it
01:02:39 <alise> do you have the link to my explanation?
01:02:41 <alise> I'll show what I mean
01:03:14 <coppro> AFAICT, we're currently arguing over the specification of the problem
01:03:17 <alise> i need the explanation though :P
01:03:22 <alise> i could search the logs I guess
01:03:34 <alise> coppro: well, I'm 99.9% sure I've described the problem correctly
01:03:48 <coppro> alise: I'll wait on your explanation before saying more
01:03:59 <alise> you have read http://pastie.org/812459.txt?key=cadkhg4ho0qiceepz1a7w right?
01:04:06 <alise> might be good to read it again :P
01:05:00 <alise> slight hinting + greyscale antialiasing makes linux typography okay, yay.
01:05:59 <alise> with the antialiasing thing?
01:06:15 <coppro> however, I also see our disagreement
01:06:28 <coppro> you're considering it as an isolated case; I'm considering every function and type as a whole
01:07:10 <alise> add more jargon to that
01:07:14 <coppro> e.g. there is an comparison function which is defined for numbers, but not for lists
01:07:30 <coppro> whereas there is a function to get the first element of a list that is not defined for numbers
01:08:05 <alise> a table is a type, by the way
01:08:10 <alise> rows = members of that type
01:08:13 <alise> columns = functions on that type
01:08:20 <coppro> okay, that's what I was missing
01:08:23 <alise> rows are data, columns are functions
01:09:54 <coppro> now things make more sense :)
01:10:36 <alise> yeah the "some functions aren't implementable" thing was confusing me
01:11:02 <alise> also, note that not every function on a type needs to be a column; if it doesn't access the data directly and is just a composition of columns and other non-column functions, it doesn't change definition depending on the row
01:11:14 <MissPiggy> hey alise, will you be on next week?
01:11:25 <alise> MissPiggy: End, yes; why?
01:11:35 <MissPiggy> well just wondering like if you aren't
01:11:48 <alise> coppro: this adds slight awkwardness to the typical functional style because you have to declare column functions specifically; I'm considering inferring it
01:12:00 <alise> (pattern match = Damn nigga, you sum columnic function)
01:12:15 <alise> MissPiggy: Then what? You mean if they find out and imprison me in a fortress for 100 years?
01:13:41 <alise> Not particularly. They know I can program and like being on the computer (which I wave away with "talking on IM? yeah, yeah, that. no, not Facebook") but I don't think they know I have any sort of web prescense, so them googling for me is unlikely
01:14:00 <alise> If they don't do that, how will they find out? The incriminating thoughts have been in my head since the first few days and they don't seem to have read them yet.
01:14:34 <alise> If I'm not on this week or next week, well... what can you do? Nothing, really.
01:14:42 <alise> Rest assured I won't be personally giving up, so...
01:15:52 <coppro> We'll just assume your Finnish internet connection isn't set up :P
01:16:27 <alise> Internet connection is the only thing going for Finland over Sweden and Norway.
01:16:37 <alise> I'm adamant about not working for the military, so it's out :P
01:16:52 <alise> (Even though by 18 I'll be a senior professor of awesome at MIT.)
01:17:21 <coppro> I thought you weren't going to the USA? :P
01:18:34 <alise> All the excellent CS universities are in America. I could, at least, stand Massachusetts. :-P
01:18:48 <alise> Also note that I may have been joking a wee bit, what with the senior professor of awesome thing.
01:19:12 <coppro> clearly this is the difference between male and female ehird
01:19:38 <oerjan> yeah the male one never joked
01:19:39 <alise> Yes; female alise would never be promoted to Senior Professor of Awesome because of SEXISM
01:19:56 <alise> Also, hey, who says I'm female! Just because I'm referring to myself with female pronouns!
01:20:10 <alise> It's sexism to mandate that only one sex can use one set of pronouns.
01:25:37 <alise> Why did classic Clearlooks become modern Clearlooks?
01:25:40 <alise> Old Clearlooks is far prettier.
01:33:40 <augur> alise: they'll have to create that professor for you, i think
01:34:47 <alise> Professor. Ingredients: 50 bananas/day. 25 cups of coffee/day. 1 Ph.D. Mix until of a frazzled and messy consistency. Cook for 30 minutes at 30 Celsius.
01:35:15 <coppro> or, if a physicist, at 300 K
01:36:35 <alise> yes physicists are cold, horrible people
01:36:37 <alise> is that what you meant?
01:36:49 <alise> 3.15 degrees make all the difference
01:37:02 <alise> hmm, so the difference between a physicist and a mathematician is ~pi
01:37:20 -!- Asztal has quit (Ping timeout: 258 seconds).
01:39:07 <coppro> I'm trying to freeze the physicists
01:40:07 <alise> yeah 26.85 degrees is freeeeeeeezing
01:40:13 <coppro> I know I'll never get rid of their energy entirely, but I'll get rid of what I can
01:40:50 <coppro> then I shall design a mysterious and inexplicable device with their zero-point energy
01:42:28 <coppro> hmm... in what language should I write my text visualizer?
01:45:20 <coppro> Already had your reply written down
01:45:31 <alise> The whole program essentially boils down to "vis s = map tile s", after all.
01:45:43 <alise> Indeed, with FRP, you could write literally that.
01:46:04 <alise> Okay then, "vis tiles s = map (tile tiles) s".
01:46:59 <coppro> I'm strongly considering Haskell
01:47:00 <alise> Well, it's not "to start with", it's pretty close to all you need.
01:47:09 <coppro> alise: I intend to add more features
01:47:15 <alise> Of course, but the actual tiling part.
01:47:29 <alise> coppro: If you do, please do consider using an FRP toolkit.
01:47:37 <alise> You don't have to worry about updating the rendering on its changing or anything.
01:47:42 <coppro> alise: Yes, that seems like a good idea :)
01:47:43 <alise> (FRP is basically event-based programming, but functional)
01:48:10 <alise> coppro: Unfortunately, most FRP implementations suck. :-)
01:48:28 <alise> I don't know if GuiTV lets you do arbitrary graphics, but look at http://www.haskell.org/haskellwiki/TV for the sort of thing that would help updating
01:48:58 <alise> (TV is conal's plaything, and conal is one of the main FRP dudes; he was writing papers about it from the start)
01:49:16 <alise> coppro: So what kind of features are you considering?
01:49:20 <alise> Here's something that would be cool:
01:49:47 <coppro> alise: changing tile images based on surroundings, possibly editing
01:49:53 <alise> You could tell it to run the command "nethack", with a definition file that says the area of the screen (coords of the map) is to use tileset foo, and the rest is to use tileset (a simple bitmap font).
01:50:02 <alise> It'd interpret the vt100 codes and send your keypresses, and voila!
01:50:06 <coppro> yeah, that was on the 'lofty goal' bit
01:50:09 <alise> Graphical nethack in a few lines and some drawing!
01:50:14 <alise> vt100 codes are very simple, so
01:50:23 <coppro> was thinking that /exact/ thing, actually
01:50:23 <alise> you could even use termcap/whatever to make them send ones easier for you
01:50:33 <coppro> not that I'd actually use it for nethack
01:51:06 <alise> given a program that compiles ascii characters to apl chars
01:51:19 <alise> you could arrange the apl chars to the alphabet etc on your keyboard to your liking like the old apl keyboards, and just type away
01:51:51 <coppro> where should I start with actually learning Haskell Syntax?
01:52:04 <alise> coppro: You should learn Haskell in one go. :-)
01:52:06 <MissPiggy> coppro, f x y z is what you'd normall write like f(x,y,z)
01:52:14 <alise> http://learnyouahaskell.com/ is an excellent starting point.
01:52:14 <MissPiggy> except that its ACTUALLY (((f x) y) z)
01:52:25 <coppro> thank you for telling me what currying is
01:52:29 <alise> It's practical, simple to understand and amusing.
01:52:37 <alise> MissPiggy: coppro is rather beyond that stage
01:52:42 <MissPiggy> coppro thank you for learning the first thing about haskell syntax
01:53:02 <coppro> I also happen to sort-of understand monads
01:53:06 <alise> coppro: learn you a haskell doesn't actually explain monads yet, but surely you've picked up what a monad is by now?
01:53:20 <MissPiggy> what I wrote has nothing to do with monads
01:53:28 <alise> that was the reverse state monad
01:53:33 <alise> http://lukepalmer.wordpress.com/2008/08/10/mindfuck-the-reverse-state-monad/
01:53:36 <alise> (it passes state backwards in time)
01:54:07 <coppro> hmm... LYAH says it's aimed at someone who hasn't done functional programming
01:54:19 <alise> it works for someone who has too
01:54:31 <alise> it just might be a little easy at first :P
01:54:39 <alise> remember that style is important in haskell, though
01:54:49 <alise> it's easy to write bad haskell code, and it often looks like good code in other languages.
01:54:55 <alise> (because they're less expressive)
01:55:00 <MissPiggy> if coppro doesn't like reading things he already knows he should just learn Haskell from the Report
01:55:02 <alise> so paying attention to what it does is probably a good idea
01:55:22 <alise> I think A Gentle Introduction is harder to read than the Report :-)
01:55:25 <MissPiggy> the highest signal ratio you will get is from the report
01:55:35 <MissPiggy> yeah it is but he flipped out when I mentioned currying
01:55:38 <coppro> alise is right though; style is everything
01:55:48 <alise> MissPiggy: he didn't
01:55:56 <MissPiggy> so he probably wont be able to handle LYAH
01:55:59 <alise> he was just pointing out, sardonically, that he was rather beyond that stage
01:56:38 <coppro> "Haskell was made by some really smart guys (with PhDs)" <-- excellent. An important feature to any language.
01:56:48 <alise> Hey, I don't have a Ph.D.
01:57:35 <MissPiggy> just steal ideas from PhDs then, that's what I do
01:57:52 <alise> later, I'll pay them to make a proof of soundness for me to steal.
01:58:12 <coppro> TeX is pure genius. And it was made by a guy with a Ph.D. Coincedence?
01:58:25 <alise> Ehh, TeX has flaws :P
01:58:40 <alise> it's good though, just not "pure genius"
01:58:42 <uorygl> Objective-C. /me yawns.
01:58:45 <MissPiggy> I thought it was pretty much just a good tool that needed to be made
01:58:48 <alise> coppro: you do realise you can get a Ph.D. in theology, right? :D
02:00:42 -!- MissPiggy has quit (Quit: Lost terminal).
02:01:20 <alise> the top two things missing from haskell:
02:01:25 <alise> 1. Dependent types
02:01:31 <alise> 2. A powerful (ML-style) module system
02:01:50 <alise> 1 would in fact remove the need for many other features (like foralls and typeclasses) and even go a long way to solving 2 :P
02:02:19 <alise> (http://folklore.org/StoryView.py?story=Do_It.txt)
02:03:06 <alise> I'm doing that! Sort of.
02:03:13 <alise> By making an entirely new language with lots of things from Haskell.
02:03:34 <coppro> quick, someone explain why negative numbers must be in parens
02:04:01 <uorygl> Haskell needs typeclasses?
02:04:14 <alise> coppro: because f -3 is f - 3
02:04:24 <uorygl> I've pondered emulating typeclasses in Agda and decided that Agda without typeclasses would be superior to Agda with typeclasses.
02:04:28 <alise> that's haskell's first dirty little secret :)
02:04:34 <alise> uorygl: haskell doesn't "need" them
02:04:48 <alise> implicit arguments + records/modules > typeclasses
02:04:58 <alise> the former almost always comes with dependent types.
02:05:15 <coppro> alise: knowing nothing, I'm going to guess that operators are just identifiers and arithmetic is a curried expression template?
02:05:16 <uorygl> data Monad m = Monad {return :: forall a. a -> m a; . . .}
02:05:26 <alise> coppro: (symbols) is an infix operator
02:05:43 <alise> arithmetic is just a function :P
02:05:51 <alise> uorygl: yes, but you have to specify that every time :)
02:05:55 <alise> but yes, that + implicit arguments = tada
02:05:58 <Sgeo> if/then/else is more than just a function :(
02:06:00 <coppro> yeah, but I was thinking it would be smalltalkish
02:06:03 <alise> Sgeo: not in agda!
02:06:17 <alise> (1 +) works, so does (+ 2)
02:06:22 <alise> you can think of (1 + 2) like that if you want.
02:06:22 <Sgeo> coppro, you can do that in Haskell
02:06:39 <coppro> I guess I'll read a bit more before adding additional comment
02:06:45 <alise> coppro: there's also "infix[lr] symbols N" which defines associativity and precedence
02:08:06 <alise> agda does operators far better
02:08:16 <alise> if_then_else_ is how you define the conditional operator (syntax in haskell)
02:08:21 <alise> _+_ is addition, etc
02:08:59 <coppro> yeah, I know, I read that bit of Agda
02:09:10 <coppro> languages that modify their own syntax always scare me though
02:09:48 <alise> it isn't modifying syntax
02:10:15 <alise> you could view it as agda parsing to a very linear form at first
02:10:20 <alise> and the rest being semantics, not syntax
02:10:30 <alise> anyway, it isn't full syntax modification
02:10:57 <coppro> still makes me squeamish
02:11:20 <alise> I find syntax modification slightly creepy but I just see mixfix as a generalisation of prefix, infix and postfix operators
02:11:30 <alise> after all, you can emulate if a then b else c with if a then (b else c)
02:11:45 <alise> so the only "big" change is allowing non-symbols in operator names, which means you can't know for sure what's an operator at parse-time
02:12:50 <Sgeo> We should make a language where syntax modification is critical to use, or something
02:13:09 <alise> coppro: I might have to be up at 8, but probably not. Probably more like 9-10.
02:13:18 <alise> I should probably think about bed sometime.
02:13:25 <alise> But I'm stupid, so I won't :D
02:13:42 <Sgeo> Bleh. LYAH's code samples have invisible _
02:14:16 <alise> http://esolangs.org/wiki/Defcalc
02:14:19 <alise> I like this language
02:14:29 <Sgeo> alise, I can't see them
02:14:33 <Sgeo> For some reason
02:14:48 <Sgeo> They look like spaces
02:14:58 <alise> line height or sth probably
02:16:18 <Sgeo> http://i.imgur.com/sMKlv.png
02:18:23 <coppro> There's supposed to be underscores there?
02:18:43 <coppro> I love the wiggler diagram of the list
02:18:51 <alise> (Underscore means "ignore this argument".)
02:19:11 <Sgeo> Nothing <*> _ = Nothing
02:19:18 <coppro> alise: http://learnyouahaskell.com/listmonster.png
02:19:25 <Sgeo> Not space, like it appears in the screenshot
02:19:38 <alise> i think that's new since I read it
02:20:10 <pikhq> A list is a curious monster.
02:20:49 <oerjan> coppro: requires the content type to be comparable with ==
02:20:49 <alise> because it's "null xs"
02:21:10 <alise> so you can't compare two lists of incomparable elements, so you can't do == [] on them
02:21:16 <alise> null, otoh, uses pattern matching, and so is fine
02:21:38 <coppro> [1] == [] works fine for me
02:21:48 <alise> that's because you can compare numbers.
02:21:55 <oerjan> sure, but try [sin] == [] ...
02:24:18 <alise> "Mapping and filtering is the bread and butter of every functional programmer's toolbox. Uh." --LYAH
02:24:48 <oerjan> that "Uh." in the actual quote?
02:25:08 <alise> (if you're confused, whoosh)
02:25:11 <pikhq> Ah, B0NUS' writing.
02:25:26 <alise> His name is BONUS.
02:25:31 <pikhq> One of the better language tutorials I've read in general.
02:25:34 <alise> never mind his writing, take a look at his twitter
02:25:35 <alise> http://twitter.com/bonus500
02:25:53 <oerjan> alise: well i read that as a possible sarcasm tag...
02:26:03 <alise> oerjan: "bread and butter" "tool box"
02:26:26 <oerjan> well ok i did notice that too
02:26:39 <pikhq> alise: That is one of the more amusing Twitters.
02:26:50 <alise> He emits twats on a daily occasion.
02:26:58 <alise> Tee hee hee, twat. Ahem.
02:27:32 <oerjan> twit is destined to become a strong verb
02:27:53 <alise> Twit, twit your twat's twat.
02:28:13 <alise> Idiot, post (your vagina's posting to Twitter) to Twitter.
02:29:30 <alise> I will sleep soon, I will sleep soon, I will sleep argh
02:29:53 <oerjan> any ops here? we should ban alise for hïrs own good
02:30:17 <alise> hrs own good? What sort of grammar is that?
02:30:25 <alise> also, I'm only going to be affecting my performance in Hell.
02:30:43 <alise> might need to wake up at 8am, it's 2:30. but more likely 9 or 10
02:30:44 <oerjan> you might still want to show up on time...
02:31:13 <pikhq> If Elliot is anything like I, mobility and consciousness are detached.
02:31:17 <oerjan> i'm just trying to make neutral pronouns by merging...
02:31:22 <alise> pikhq: only partly. :P
02:31:28 <pikhq> And I presume that he merely needs mobility, and doesn't *desire* consciousness.
02:31:29 <alise> oerjan: Show up on time? They come for you.
02:31:36 <alise> I would just have to do without much sleep.
02:31:49 <alise> pikhq: oh, I can't be mobile without consciousness
02:32:00 <alise> I find my mind sparks a lot while I'm sitting barely able to move my hands on the keyboard, though
02:32:06 <pikhq> alise: Sounds like mobility isn't needed, either.
02:32:18 <alise> I am expected to walk around and go to classes when I get there...
02:34:03 <alise> I wonder if this chocolate will make me sleepy.
02:36:04 <Sgeo> alise, they have classes there?
02:36:21 <pikhq> Sgeo: It is, nominally, a school.
02:36:31 <alise> I would hardly be sane if I wasn't pumped with the idiotic national curriculum, would I?
02:36:37 <alise> pikhq: Actually, it's a "hospital" containing a school.
02:36:47 <alise> Or rather, a branch of a metaschool with no physical location.
02:36:56 <alise> (schools various newcastle hospitals.)
02:37:03 <coppro> For the most part, the idiotic national curriculum is a good thing.
02:37:19 <alise> Quadruple hell no.
02:37:42 <Sgeo> Remind me again how this is a bad thing? You're forced to stay nights, I think? I guess that makes it bad
02:37:45 -!- MizardX has quit (Ping timeout: 248 seconds).
02:38:04 <alise> The national curriculum of almost all - (all?) - countries actively inhibits learning for the intelligent.
02:38:30 <coppro> unfortunately, the majority of people are not 'the intelligent'
02:38:40 <pikhq> Sgeo: He was homeschooled. They believe he is in some manner or another mentally deficient. They are threatening to institutionalise him.
02:38:48 <alise> Homeschooled, I object to that word.
02:39:06 <pikhq> alise: 'Tis the word, though.
02:39:08 <alise> I was not in a "school" at "home" nor was I taught by my parents as the word evokes.
02:39:23 <alise> I did, however, learn a crapload more than I ever learned beforehand and stopped hating life.
02:39:37 <pikhq> So, then, your education more consisted of "Learn."
02:39:43 <uorygl> The thing about the public school system is that it inhibits teaching kids stuff like magic and religion.
02:39:50 <alise> Sgeo: Why it's bad: one, it is not voluntary, although it pretends to be, for I am under grave threat of institutionalisation; two, I should not be drinking the "nutritional supplement" I am; three, blah blah blah
02:40:15 <coppro> I'm in a gifted program, which is all that kept me sane. Since I hit high school it's not as necessary for a number of reasons, though I'm still in the program
02:40:19 <alise> uorygl: Well, that is true. I don't think parents should teach their children; on average, people are pretty dumb, including parents.
02:40:30 <pikhq> alise: I'd like to comment that I managed to get through "normal" education just fine.
02:40:42 <pikhq> *Granted*, I spent most of that time learning things for myself...
02:40:47 <Gregor> I somehow survived public schools.
02:40:52 <alise> pikhq: the fact that I was also bullied intensely for almost my entire school career did not help.
02:41:12 <coppro> what, you don't whois everyone who joins the channel?
02:41:16 <pikhq> alise: Oh. That hinders greatly.
02:41:18 <alise> I can use a feminine name and pronouns while still identifying as male if I want to!
02:41:28 <uorygl> I whoised alise after I suspected e was ehird.
02:41:34 <alise> coppro: I don't have ehird or anything in my whois :P
02:41:35 <pikhq> Such was my life in elementary school.
02:41:39 <uorygl> I did not recognize eir IP address.
02:42:03 <coppro> uorygl: it says "identified as ehird"
02:42:12 <coppro> e must have dropped that
02:42:12 <alise> I suppose I seriously must bed myself soon; something like 5:20 hours of sleep if I sleep now and have to wake at 8.
02:42:16 <alise> 9 or 10, maybe, probably.
02:42:23 <alise> But still. Perhaps 8.
02:42:29 <alise> So, very soon. Very very soon.
02:42:29 <uorygl> alise: so, you're made to stay nights at whatever this place is for the sole purpose of forcing you to drink whatever this thingy is?
02:42:31 <coppro> I was bullied a lot before I switched into this program
02:42:38 <alise> Uh, anyone have the link to the pastie?
02:42:44 <coppro> Since then, I've learned that bullies are idiots
02:42:47 <alise> Eh. I'll summarise.
02:42:53 <uorygl> If so, that's simply inefficient. Write the papers.
02:43:11 <alise> uorygl: I am mainly there because they believe I could not function in normal society because I am a recluse; they believe I am on the autistic spectrum, leaning to Asperger's, and probably have OCD.
02:43:24 <alise> They are, however, doing nothing to "fix" these things even if you accept them as diagnoses.
02:43:29 <uorygl> Or, to use a less oddly ambiguous phrase, inform the media.
02:43:38 <Gregor> "His only crime was being born delicious!"
02:43:48 <uorygl> Okay, that's more... understandable.
02:43:53 <alise> Instead, based on the junk science of BMI and the fact that I'm quite below-average weight, just as my father was,
02:44:00 <alise> that's why they're doing the drink thing.
02:44:08 <alise> It's intended for people with disease-related malnutrition, so... yeah.
02:44:13 <alise> I eat perfectly fine.
02:44:18 <pikhq> I thought everyone knew that BMI was little more than a guideline...
02:44:25 <alise> It's not even that!
02:44:32 <alise> It was invented by a mathematician in the 1800s and was fudged to fit the data!
02:44:36 <pikhq> A poor one, though.
02:44:44 <alise> In the 1800s people barely exercised! Body mass was totally different!
02:44:54 <uorygl> Have you seen a doctor about whether you're underweight or not?
02:45:00 <alise> Anyway, I'd write to the papers but if it gets to the courts there's a chance I'll be sectioned there and then.
02:45:01 <coppro> uorygl: it's all "doctors"
02:45:15 <alise> uorygl: I am "underweight" as in below average weight.
02:45:23 <alise> So was my dad at the same age until quite later on in his life. He ate fine too.
02:45:37 <uorygl> Have you seen a GP about whether you're underweight or not?
02:45:51 <alise> No, but undoubtedly they had.
02:45:57 <alise> But nutrition science is bullshit.
02:46:06 <pikhq> uorygl: Pretty hard to when he's held there on weekdays.
02:46:09 <alise> (Just ask Ilari, if you have a few hours. Fudged data for political reasons, outright ignored conclusions, ...)
02:46:28 <alise> Anyway, since the media carries a risk of court which carries a risk of sectioning, the more foolproof option, moving country, is the one currently being persued.
02:46:29 <uorygl> You mean that if the courts find out that you wrote to the papers, they could use that as a reason for... whatever sectioning is?
02:46:36 <alise> Sectioning = institutionalisation.
02:46:47 <alise> The court could notice the case, examine it, and conclude I should be sectioned.
02:46:58 <coppro> they can actually do that?
02:47:07 <coppro> without being referred to?
02:47:09 <Sgeo> alise, how long could it take to prepare? Shouldn't you have been doing that this weekend?
02:47:13 <alise> Well, if the courts don't notice or do anything with the case, why contact the media?
02:47:18 <alise> What would it accomplish?
02:47:20 <alise> Sgeo: What, moving?
02:47:24 <pikhq> Sgeo: He needs a passport.
02:47:35 <alise> We have the forms, I just didn't get round to getting my picture for the passport this weekend, oops.
02:47:38 <alise> Next weekend we'll do it.
02:47:40 <uorygl> Well, maybe you should go see a GP.
02:47:42 <alise> As far as planning, we don't need to do much.
02:48:00 <pikhq> alise: Issues with employment or anything?
02:48:06 <uorygl> To get a sympathetic viewpoint or something.
02:48:31 <alise> uorygl: Why? The mainstream opinion on stuff like this is bullshit that doesn't even consider family history, your frame or anything.
02:48:40 <Sgeo> Next weekend, shall I remind you to get your picture?
02:48:42 <alise> BMI has not been widely discredited, even though doing so could be done by an infant.
02:48:47 <alise> Sgeo: That would be good. :P
02:49:41 <pikhq> alise: Believe it or not, this is less of a fucked up situation than some other things I've heard... There's been a few parents in the UK who were termed "unfit" to be parents for the sole purpose of meeting adoption quotas.
02:49:44 <uorygl> Go see a GP because I'm curious whether the GP you see will be a real person or not?
02:49:47 * Sgeo goes to Google Calendar
02:49:56 <alise> uorygl: "Real person"?
02:50:00 <alise> I am confused by your terminology.
02:50:13 <uorygl> The sort of person who would look at overwhelming evidence and not disagree with it.
02:50:58 <alise> I'd much rather not waste any time and enact the plan ASAP; it's a soul-sucking place and I can't take much more.
02:51:26 <alise> But, uhh, I'm afraid my expectations of the health service are basically 0 after this.
02:51:45 <uorygl> How much time do you spend in this place?
02:52:13 * Sgeo writes stuff in Google Calendar that looks like vacation planning
02:52:14 <alise> It's not a place you go to in the week so much as home is a place you go to on the weekends.
02:53:11 <uorygl> Indeed, the world is full of injustice and strangeness. Especially if you have Asperger's.
02:53:30 <pikhq> uorygl: The UK's handling of it is full-on retarded.
02:53:49 <alise> uorygl: I don't really believe Asperger's is a real mental condition in any form, especially in its modern, over-vagueised form.
02:53:59 <alise> Maybe a silly synonym for "intelligent nerd".
02:54:26 <uorygl> I think I concluded at some point that if three things are mutually correlated, you can call them one thing.
02:54:36 <uorygl> I mean, I think the definition of a syndrome is a set of traits that tend to occur together.
02:54:39 <alise> Maybe. But it's certainly not a mental illness.
02:54:53 <uorygl> Well, it causes problems.
02:54:58 <alise> Or even "worse" than allism (the opposite of autism; http://www.fysh.org/~zefram/allism/allism_intro.txt), I'd say it's better.
02:54:59 <Sgeo> It's a mental difference :D
02:55:09 <alise> Empathy is spooky emotion at a distance. :-)
02:55:10 <pikhq> alise: It is, at most, a very mild form of disability.
02:55:24 <alise> (mild) autism is certainly a more rational state than allism
02:55:44 <uorygl> In the past couple of days, I've felt significantly, perhaps severely, handicapped by Asperger's.
02:56:28 <pikhq> Social interaction is very, very hard...
02:56:39 <alise> Only allistic social interaction.
02:56:45 <pikhq> With most basic reactions basically learned by rote.
02:56:51 <alise> It wouldn't be a disability if most people were autistic.
02:56:56 <pikhq> Autistic social interaction is the most trivial thing in the world.
02:56:57 <alise> So it isn't a disability.
02:57:06 <alise> If you had a society full of retards, on the other hand...
02:57:09 <alise> That wouldn't work.
02:57:21 <alise> Anyway, I may be biased by the fact that psychological conditions are defined by consensus among psychologists, not evidence.
02:57:28 <alise> Which makes me go rawr and :(.
02:58:05 <uorygl> I've heard (ahem) that Asperger's causes akrasia to a degree much higher than that suffered by other people.
02:58:14 <Sgeo> If we lived in a society where most people had wings and could fly, would not having wings be considered a disability?
02:58:23 <Sgeo> Hm, imperfect analogy
02:58:26 <alise> You can't be vague, uorygl, and expect everyone else to know exactly what you mean.
02:58:31 <alise> Especially if it's based on personal experience.
02:58:32 <uorygl> Where "akrasia" is stuff like addiction, procrastination, and generally acting against one's better judgement.
02:58:58 <alise> I'd call an autistic person's obsession dedication or specialisation, not addiction.
02:59:10 <alise> Is procrastination more prevalent in autistics? Prove it.
02:59:17 <Sgeo> Wings confer benefits even in a world where only one person has wings.
02:59:28 <alise> Sgeo: but autism/allism aren't utilities
02:59:33 <alise> they're different configurations
02:59:36 <pikhq> alise: "Addiction" is, indeed, the wrong term...
02:59:54 <alise> is being a rabbit, not a snake, a disability?
03:00:10 <uorygl> Addiction is something I don't really suffer from.
03:00:25 <Sgeo> My dad thinks I'm addicted to the computer
03:00:31 <alise> I'm addicted to the computers and the internet. Which just makes my weekdays stay in Hell all the more pleasant.
03:00:50 <alise> Computers and the internet? Yeah, we have those. The computers are for schoolwork only and the internet censored.
03:01:04 <alise> The closest I get to programming is on paper.
03:01:09 <uorygl> Procrastination, I do. I've only been able to complete three classes this year.
03:01:20 <pikhq> alise: I've done some of my best golfing on paper.
03:01:23 <uorygl> Assuming that I can finish the one class I have this semester. I probably can.
03:01:29 <alise> pikhq: You can't evaluate paper.
03:01:33 <uorygl> Heh heh, "addicted to the computer".
03:01:36 <alise> You can't do exploratory programming on paper.
03:01:43 <pikhq> Sorry, *Brainfuck* golfing.
03:01:43 <alise> uorygl: Why the hehs?
03:02:03 <pikhq> Which is exceptionally easy to evaluate, even with just a piece of paper and a pencil.
03:02:09 <alise> pikhq: I do have to wonder if they'd allow a laptop without an internet connection, but it'd have to be a pretty damn cheap laptop to make that worthwhile.
03:02:10 <uorygl> "The computer" is not an activity; saying "addicted to the computer" is like saying "addicted to the exterior of one's house".
03:02:16 <alise> uorygl: Oh I agree.
03:02:24 <alise> I've tried to explain to people that the computer is composite, not atomic.
03:02:42 <pikhq> How can people *not* understand that?
03:02:43 <alise> But the fact is that I don't really like to do X much, where X is most things that are not contained within the computer.
03:02:58 <alise> pikhq: Because they see you sitting in front of a screen typing and mousing in much the same way as you ever do.
03:02:59 <pikhq> I mean, really. My computer gets used for a hell of a lot of things...
03:03:02 <alise> Thus, it's one activity.
03:03:05 <Sgeo> I once helped someone by showing them the recent files in the File menu in Word
03:03:08 <alise> (Yes, I know they don't see *you* mousing.)
03:03:14 <pikhq> I read books, I read magazines, I read comics, I write programs, I chat...
03:03:17 <Sgeo> She proceeded to refer someone who was having programming troubles to me
03:03:18 <pikhq> I play video games...
03:03:52 <alise> you forgot pornography
03:03:53 <pikhq> Watch movies, watch TV, listen to music...
03:04:06 <alise> Sgeo: Computer = one activity. You're good at programming = fix my computer.
03:04:24 <pikhq> It's like the magic "Do everything" machine!
03:04:30 <alise> You're family/friend = I don't understand how it works, but I know how to use a keyboard and a mouse, so it's easy.
03:04:43 <alise> Compare with painting: Most people don't know how to paint a picture of any real sort of caliber.
03:04:51 <alise> But you can easily tell a "real" painting, so they don't do that.
03:05:00 <alise> With computers, everything looks alike. To inexperienced users, that is.
03:05:48 <pikhq> It's amazing how few people are even competent with computers, even today.
03:06:36 <pikhq> And I don't even mean "have a concept of how it works", but even just "learn the basic working concepts of the UI or UIs they commonly use, so that they can readily figure things out."
03:06:39 <Sgeo> pikhq, I love it.
03:06:40 <alise> i can't wait until we're all uploaded minds experiencing totally configurable virtual realities of our design
03:06:45 <alise> it will be freakin' SWEET
03:06:47 <Sgeo> It means I can show off without using my brain!
03:07:32 <alise> I'm shutting things down to leave...
03:07:36 <alise> You have a few minutes, tops.
03:07:54 <pikhq> alise: Gxis la revido, mia bonega amiko.
03:08:17 <Sgeo> Also, what's -ega?
03:08:27 <Sgeo> It's been a while
03:08:41 <alise> Anyone have anything to say to me before I disappear for five days?
03:08:58 <pikhq> alise: Retain thy sanity.
03:09:01 <Sgeo> alise, may you retain your sanity
03:09:05 -!- jcp has quit (Ping timeout: 260 seconds).
03:09:07 <alise> pikhq: Sgeo: EXPOSED AT LAST
03:09:20 <alise> Which one is the one created to fuck with me, pikhq or Sgeo?
03:09:41 <oerjan> wait which sense of "fuck" is this?
03:09:50 <pikhq> He doth not use the common tongue correctly.
03:09:57 <pikhq> oerjan: "to mess with".
03:10:02 <alise> oerjan: The sexy sense! By which I mean the sense in which someone is created to confuse me.
03:10:14 <alise> So long, suckers. If you don't keep the missing counter updated in the topic, I'll know you don't truly love me.
03:10:30 <alise> Alise/ehird/Lord Bob Bobbington Bobbingson the Third, out.
03:10:35 -!- alise has quit (Quit: Leaving).
03:10:58 -!- pikhq has set topic: RIP sun.com | 2 days since last ehird sighting | 0 days since last alise sighting | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
03:16:54 <oerjan> argh, a dripping sound
03:21:47 <Gracenotes> okay, I'm just submitting my applied algebra homework with rendered latex and not caring that everyone else is using pencil+paper
03:22:32 -!- jcp has joined.
03:23:04 <oerjan> always add some commutative diagrams for good measure
03:24:52 <uorygl> I wonder if I have any homework that's due tomorrow.
03:25:02 <Gracenotes> sadly nothing too abstract yet, just coding theory over binary n-tuples
03:25:22 <uorygl> My professor wants us to both submit the problems online and hand in a paper copy. So far, I think I've consistently done exactly one.
03:25:23 <Gracenotes> not too many structures to commute over
03:25:39 <oerjan> you and oklopol and your coding theory
03:26:10 * Sgeo should learn LaTeX
03:26:17 <Gracenotes> also, I really need to write a Haskell module that autogenerates tabular based on a function
03:28:27 <oerjan> Gracenotes: maybe http://hackage.haskell.org/packages/archive/tabular/0.1/doc/html/Text-Tabular-Latex.html ?
03:29:09 <Gracenotes> eh. that would involve using the table AST-y thing they provide
03:43:55 <Gracenotes> hurrah, Visual Studio 2008 Professional Edition has been installed on my recently partitioned Windows 7 install
03:44:29 <Gracenotes> but if it's for computer game programming class... I might be able to forgive myself
03:44:42 <Gracenotes> also apparently recent versions aren't that bad at all
03:45:42 -!- jcp has quit (Read error: Connection reset by peer).
03:46:59 -!- jcp has joined.
03:47:03 <Gracenotes> here is the site for it: http://mysbfiles.stonybrook.edu/~mgruen/cse380/project.html
03:47:42 <coppro> is that the assignment?
03:48:32 <Gracenotes> the individual project, spanning the next month or so
03:51:30 <Gracenotes> it all relies on the delay idea being enjoyable
03:51:41 <Gracenotes> I've been idly thinking of puzzle ideas these last few days
04:05:48 <Gracenotes> the identity matrix where n = 1 is just 1, right
04:08:36 <Gracenotes> muahaha, latex is so pretty. I feel evil making such good-looking documents.
04:11:52 <oerjan> oh dear, it's all an evil overlord plot isn't it
05:00:13 <coppro> question: In Haskell, some pattern matches must be in parens. Why?
05:00:36 <coppro> e.g. (x:xs) rather than x:xs
05:07:33 <oerjan> precedence. : has fixity 6 iirc
05:07:48 <coppro> and -> has higher precedence?
05:08:12 <oerjan> -> and = is syntax. : is an operator
05:08:37 <oerjan> more importantly, function application has higher precedence.
05:13:33 <oerjan> coppro: http://www.haskell.org/onlinereport/syntax-iso.html
05:17:33 * coppro is going to go buy a lab coat
05:21:22 -!- jcp has quit (Read error: Connection reset by peer).
05:23:12 -!- jcp has joined.
05:30:38 -!- sshc has joined.
05:39:09 -!- Gracenotes has changed nick to Floor_Feline.
05:57:02 -!- oerjan has quit (Quit: Good night).
06:02:52 -!- zzo38 has joined.
06:11:59 <zzo38> Hello, I was writing a program today, and when using the GNU debugger I noticed that uninitialized values will be 0xBAADF00D and helps a bit
06:12:19 <pikhq> That's rather nice, actually.
06:12:59 <coppro> probably a compiler setting
06:13:31 <zzo38> Do you mean the -ggdb compiler setting?
06:13:57 <coppro> I should do my homework
06:15:17 <zzo38> Also, how do you figure out what numbers you need to use in the weather forecast URL http://xml.weather.yahoo.com/forecastrss?p=AYXX0008&u=f
06:15:18 <coppro> hm... it occurs to me that functional programming is just a big pun
06:15:27 <zzo38> What do you mean by that?
06:15:34 <zzo38> In what way is it just a big pun?
06:17:00 <coppro> Haskell is a language that curries functions
06:17:09 <coppro> Haskell is named for Haskell Curry
06:17:15 <coppro> currying is named for Haskell Curry
06:17:39 <zzo38> OK, now I can see it
06:18:43 <zzo38> Do you think it is really a conspiracy? Some things might be conspiracies, but I'm not sure about this one.
06:21:39 <zzo38> I also noticed that converting the game "Escape from Planet Delta" from OASYS to TAVSYS, that the TAVSYS binary is smaller than the OASYS binary even though TAVSYS doesn't know about OASYS runtime, so it is built in to the TAVSYS story file instead. (Maybe it is because the TAVSYS file stores string using Baudot?)
06:26:43 <zzo38> Why can't I use the setenv function in gcc on MinGW?
06:27:47 -!- Floor_Feline has changed nick to Gracenotes.
06:28:17 <pikhq> zzo38: Because Windows doesn't support that.
06:28:42 <zzo38> pikhq: OK, but why? getenv works, though
06:29:08 <zzo38> Does it work on gcc on Linux and on FreeBSD?
06:33:08 <zzo38> I also have another question, too. I modified the Glk.dll for my program, by modifying the accelerator table using a resource editor program. How should I mention that?
06:33:52 <zzo38> Like, in the about box (I can edit that with the resource editor, too), or something else, based on the license of the file, how is the good way to make it done?
06:40:53 <pikhq> zzo38: Windows sucks.
06:42:48 <zzo38> OK, that I can understand. Of course I know Windows sucks already, but, I still didn't put Linux, yet. But do you know the another question?
06:43:06 <coppro> zzo38: Windows does not have POSIX
06:43:13 <coppro> you must use the Win32 API to mess with that stuff
06:43:48 <zzo38> But then the program won't work on cross-platform
06:44:14 <zzo38> But at least getenv works, I can do without setenv, for now, I guess. So getenv should work on cross-platform.
06:44:14 <pikhq> Conditional compilation.
06:44:32 <pikhq> You have to do it a *lot*, simply because Windows likes to be petty.
06:44:38 <coppro> getenv is a C standard function
06:44:55 <coppro> or find a nice cross-platform library that does the conditional compilation for you
06:45:07 <coppro> or use Winelib (not recommended)
06:45:52 <zzo38> For now, I can just make it not compile in the part the uses setenv if it is Windows.
06:46:15 <zzo38> Because, it can be work-around manually
06:47:52 <coppro> what are you using the environment variables for?
06:49:46 <zzo38> But do you know the proper way to indicate somewhere that the Glk.dll is changed (if it is even necessary), to the user of the software? (I don't have the source-codes, I just changed it using resource editor, but source is available)
06:50:09 <zzo38> I am using environment variables to check the directory for include files. If there is no environment variable, it will use the current directory.
06:50:22 <coppro> why do you need setenv then?
06:50:36 <coppro> also, what do you mean "indicate somewhere that the Glk.dll is changed"?
06:50:53 <pikhq> coppro: Indicate that he hex edited it, in essence.
06:51:07 <coppro> why would he need to indicate that?
06:51:30 <zzo38> I don't really need setenv, it just makes the program a bit simpler to set the include path on the command-line by using the same variable instead of creating a new one. But, I still can create a new one, if I needed to.
06:51:59 <zzo38> Well, I didn't really use a hex editor, I used XN Resource Editor, and that is a bit different.
06:52:19 <zzo38> I want to indicate it so that you can know that it is not the official file.
06:52:51 <coppro> note: I have no clue how to do this. All I know is that they have magic GUIDs or the like
06:53:10 <coppro> I think you will also need to update the .lib
06:53:16 <coppro> that you compile against
06:53:25 * coppro curses the Windows dynamic loader
06:53:36 * coppro curses all dynamic loaders
06:56:59 -!- tombom has joined.
06:58:11 <pikhq> Windows doesn't have much in the way of dynamic linking.
06:58:21 <pikhq> Merely just-in-time static linking.
06:59:29 <zzo38> The program can compile in two mode, in COMPILE_TIME mode (which is cross-platform) and in RUN_TIME mode (which currently works only on Windows with Glk, but anyone that can fix this, to make it work on other operating systems with Glk, or without Glk, to please do so)
07:01:18 <zzo38> And the reason I needed to change the accelerators table is so that I can add special functions for the function keys even in line-input mode. WinGlk has command to add menus and toolbars, but they won't have accelerator keys and also won't work if menu/toolbars is turned off. So, I did like this instead, and it worked.
07:02:07 -!- FireFly has joined.
07:06:18 -!- kar8nga has joined.
07:16:38 <zzo38> I added the ID numbers 1 to 12 for the keys F1 to F12, but currently this program uses only F1 and F2 and F3 keys. I also added CTRL+K for the Glk options window (which is built-in to Glk.dll).
07:16:57 <zzo38> Maybe you could look to see if the program is good or if there is something that you think could be improved and what it is.
07:18:28 <olsner> hmm, I'm considering making an easier thue variant by introducing some kind of control flow (and making it sequential rather than nondeterministic), what kind do you need? goto-if-last-line-replaced-something?
07:18:58 <zzo38> I'm not sure, but I guess maybe you can try goto-if-last-line-replaced-something and then see if it can work
07:22:11 <olsner> by writing your replacements in the right way, should be possible to write a program where the last line replaces something iff one of a number of previous replacements replaced something
07:22:29 -!- Pthing has joined.
07:22:30 <olsner> then you can at least translate normal thue programs into it
07:26:41 <olsner> one of the problems here is that I have a fixed input and output format, it seems a bit difficult to work on that with thue, where you seem to often need end/start/position markers to drive the program
07:32:28 <zzo38> I once was on some weblog site that if you wrote "Anonymous" as your name, it shows a error message that you solved the CAPTCHA wrong. (I tried many times and this is what it did, until I put in a different name, such as "A. Nonymous")
07:37:21 -!- zzo38 has quit (Quit: NO CARRIER!!!!!).
07:49:06 -!- tombom has quit (Quit: Leaving).
07:49:55 -!- kar8nga has quit (Remote host closed the connection).
07:52:37 -!- FireFly has quit (Quit: Leaving).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:16:24 -!- gm|lap has quit (Quit: 2 hour UPS expired. Shutting down laptop.).
08:37:00 -!- Slereah has joined.
08:52:19 <oklopol> "oerjan: it's the (s)h/it, man" you're a genius, have i mentioned
09:02:08 <oklopol> http://esolangs.org/wiki/Defcalc <<< this is just tree rewriting
09:02:56 <oklopol> i just mean that's an incredibly old idea
09:05:04 <Slereah> So are logic combinators and yet there's a bunch of esolang about it!
09:05:49 -!- jcp has quit (Quit: I will do anything (almost) for a new router.).
09:11:53 <oklopol> i'm just grumpy because i've made more advanced tree rewriters, but never made a language about them
09:14:59 <fizzie> You're just grumpy because you're crabbed, crabby, cross, fussy, grouchy, bad-tempered, ill-tempered, annoyed and irritable.
09:16:55 -!- Kori has joined.
09:16:55 <Kori> You fucking niggers!
09:16:55 -!- Kori has left (?).
09:18:17 <fizzie> Speak for yourself there.
09:23:47 <oklopol> i've never fucked a nigger
09:24:02 <oklopol> but kori means "basket" in finnish
09:25:03 -!- SimonRC has quit (Ping timeout: 265 seconds).
09:30:56 <fizzie> It was also the monetary unit of Kutch prior to 1947, divided into 24 dokda.
09:31:51 -!- SimonRC has joined.
09:45:42 <Slereah> It is also a combinator program!
09:51:17 -!- scarf has joined.
09:56:04 -!- Pthing has quit (Remote host closed the connection).
09:56:26 -!- adam_d has joined.
10:24:53 -!- MizardX has joined.
10:26:01 -!- Asztal has joined.
10:33:24 -!- Pthing has joined.
11:20:57 -!- Asztal has quit (Ping timeout: 248 seconds).
12:28:31 -!- Pthing has quit (Remote host closed the connection).
12:52:55 -!- FireFly has joined.
13:12:42 -!- Asztal has joined.
14:48:51 -!- scarf_ has joined.
14:48:59 -!- scarf_ has changed nick to ais523.
14:49:16 <ais523> forgot I was already connected...
14:50:04 <ais523> hi from inside my marking-Java session
14:57:08 -!- oerjan has joined.
14:59:48 <oerjan> 22:17:09 <coppro> Haskell is named for Haskell Curry
14:59:48 <oerjan> 22:17:15 <coppro> currying is named for Haskell Curry
14:59:48 <oerjan> 22:17:22 <coppro> coincedence?
15:00:35 <oerjan> actually, official haskell history says that the reason they used his first name was to _avoid_ the obvious puns.
15:02:36 <oerjan> of course those obvious puns probably did not have to do with the CS meaning of curry, anyhow.
15:03:35 <oerjan> also of course it's not a coincidence, the work that HC did involving combinatory logic lead to both
15:04:31 <oerjan> although currying was not really his invention. there's another joke that we should be happy it's not called schonfinkeling.
15:07:37 <oerjan> um i didn't see anyone mentioning "currying curry". admittedly i'm still on yesterday's log.
15:08:36 <oerjan> "haskell curries", apparently
15:09:27 <oerjan> until the next time i make one even worse
15:10:38 -!- coppro has quit (Ping timeout: 265 seconds).
15:10:51 * Sgeo made a Haskell pun once
15:11:16 <oerjan> well was it functional?
15:12:02 <Deewiant> `translatefromto fi en kengän pito
15:12:21 <oerjan> finnish, the concise language
15:12:27 -!- coppro has joined.
15:12:56 -!- coppro has quit (Client Quit).
15:18:05 -!- cpressey has joined.
15:18:30 <oerjan> <oklopol> "oerjan: it's the (s)h/it, man" you're a genius, have i mentioned <-- embarassingly often
15:18:44 <oerjan> a puny genius, at any rate
15:24:27 <Slereah> `swedish The Feynman Checkerboard or Relativistic Chessboard model was Richard Feynman’s sum-over-paths formulation of the kernel for a free spin ½ particle moving in one spatial dimension.
15:24:28 <HackEgo> Zee Feynmun Checkerbuerd oor Releteefistic Chessbuerd mudel ves Reecherd Feynmun’s soom-oofer-peths furmooleshun ooff zee kernel fur a free-a speen ½ perteecle-a mufeeng in oone-a speteeel deemunsiun. \ Bork Bork Bork!
15:25:26 <oerjan> that was just before he was chased by a fermionic chicken.
15:26:20 <oerjan> `swedish bjorkbarkburk
15:26:40 <oerjan> `swedish björkbarkburk
15:26:52 <oerjan> my accent key is hung up
15:35:37 -!- Slereah has quit (Quit: Leaving).
15:35:53 <oerjan> pull out all the stops
15:38:34 <cpressey> referring to where the idiom "pull out all the stops" comes from
15:39:18 * oerjan swats cpressey for having him google to find out the meaning of his own pun -----###
15:44:39 <cpressey> I have now lost all my faith in inheritance. Not that I ever had any.
15:45:10 <oerjan> yeah those kids never turn out like you want
16:00:18 -!- oerjan has quit (Quit: Later).
16:10:13 -!- MissPiggy has joined.
16:30:59 -!- Pthing has joined.
16:58:40 -!- MigoMipo has joined.
17:02:27 <cpressey> An object-oriented esolang where you can only override a single term in a single expression every time you declare a subclass.
17:02:50 <cpressey> I like tall inheritance hierarchies.
17:06:03 <ais523> hmm, that sounds like a good idea to add to my work-in-progress esolang whose concept is "almost a normal language, but has a huge number of arbitrary restrictions which make it a pain to write"
17:06:13 <ais523> it's not a particularly interesting concept, though, so I might just abandon it
17:06:26 -!- ais523 has quit (Quit: Page closed).
17:10:00 <MissPiggy> I thought that was what INTERCAL was
17:10:21 <scarf> not really, it has a completely different way of doing expressions, and a relatively different way of doing statements
17:10:30 <scarf> INTERCAL's more like a regular imperative language based on different primitives
17:10:48 <scarf> it does have the PLEASE thing and the 16-bit restriction for constants, but that's about it
17:11:02 <MissPiggy> I was thinking about a language that could compile to every major high level language
17:11:16 <scarf> MissPiggy: Underlambda!
17:11:32 <scarf> hopefully that'll compile to every major low level language too
17:11:39 <scarf> and pretty much every minor language that's powerful enough
17:12:07 -!- BeholdMyGlory has joined.
17:12:18 <scarf> http://esoteric.voxelperfect.net/wiki/Main_Page works for me
17:12:27 <scarf> but underlambda isn't published yet, it's something I'm working on
17:12:41 <cpressey> scarf: I have a similar idea, but rather than "a huge number", I'm just trying to incorporate some of the most annoying ones.
17:12:44 <scarf> an intuitive view of it is "purely functional underload"
17:13:14 <scarf> here's one I thought up: operator precedence is fixed but follows no pattern (originally determined at random), and parens aren't allowed
17:13:33 <scarf> MissPiggy: basically, the idea's that you have a low-level core, and implement a higher-level language on top of it
17:13:48 * MissPiggy had a buggy program the other day because ops were precd wrong :(
17:13:57 <scarf> and the core is based on most of the same concepts as Underload: S works differently, but the rest of the commands are the same
17:14:53 <cpressey> Infix is fun to play with just because of that whole precedence thing.
17:20:25 -!- MizardX- has joined.
17:22:33 -!- MizardX has quit (Ping timeout: 248 seconds).
17:22:53 -!- MizardX- has changed nick to MizardX.
17:24:41 -!- adam_d has quit (Ping timeout: 248 seconds).
17:28:32 -!- kar8nga has joined.
17:40:04 <AnMaster> cpressey, isn't there an algorithm for converting it to RPN?
17:42:49 <AnMaster> as in, a specific name, named after someone or such
17:46:40 <cpressey> I mean, it's fairly standard (at least for me) to parse infix based on a table and write out postfix opcodes, in a compiler. That would be pretty close to such an algorithm.
17:53:53 <Deewiant> Converting it to RPN isn't much of an algorithm: just do a postorder traversal of the AST
17:54:12 <scarf> Deewiant: there are algorithms that don't involve ASTs
17:54:26 <cpressey> Most of the work is done by the parser (precedence and associativity), before the AST is created.
17:54:27 <scarf> apparently they were used in early compiler design; they'd compile infix to RPN and then build the AST from that
17:54:49 <cpressey> back when people thought in fortran and recursion was scary
17:55:19 <scarf> that's quite possibly the reason
17:55:47 <cpressey> and memory was scarce, and ASTs were rare...
17:56:08 <Deewiant> Well of course you can modify the AST-generating algorithm to print out RPN directly
17:56:36 <cpressey> I don't know what that is, but yes. Like for a Pascal compiler.
17:56:43 -!- tombom has joined.
17:56:48 <Deewiant> http://en.wikipedia.org/wiki/Shunting-yard_algorithm
17:57:17 <cpressey> AnMaster: I might guess that's the specific name you're looking for?
18:03:14 <MissPiggy> of course it's correct on correct inputs
18:03:23 <cpressey> I've seen it several times before, but never knew its name and origin
18:03:46 <MissPiggy> on wiki there's a great snippet "alternative to Dijkstras algorithm"
18:03:58 <MissPiggy> basically regex + into )+( and * into ))*(( etc
18:04:09 <MissPiggy> then you can forget about precedence and just read it with the parens
18:04:44 <MissPiggy> well I got that wrong ))+(( and )*(
18:17:03 <Deewiant> MissPiggy: Which is again unsound on invalid inputs, as that creates mismatched brackets so you don't know whether there were any in the original.
18:19:26 <MissPiggy> you also add (((((( )))))) around the whole thing
18:20:04 <Deewiant> Ah right, that probably works.
18:20:20 <AnMaster> also why couldn't you do error detection in shunting yard?
18:20:41 <cpressey> [1))+((2] <-- variant of that old Scheme syntax
18:21:13 <AnMaster> do you mean lisp or scheme there?
18:21:14 <scarf> does square bracket mean "unlimited number of parens, so long as it matches"?
18:21:25 <scarf> I can see why lispers would like that
18:21:30 <AnMaster> cpressey, is it those m-expression thingies?
18:21:33 <cpressey> It actually seems very un-Scheme-like somehow, so maybe yeah.
18:22:00 <cpressey> scarf: Yes, ] closes all currently open brackets. (There was no corresponding [ in LISP or whatever though.)
18:22:08 * MissPiggy actually hates all [] {} crap in lisps
18:22:28 <cpressey> No idea about the name of it. And yes, I'm not a fan of it either, except as an ugly eso-adoptable thing maybe.
18:22:50 <AnMaster> cpressey, is it related to http://en.wikipedia.org/wiki/M-expression ?
18:22:54 <MissPiggy> that's where it comes from anyway, some crazy person decided to implement it after seeing it on IRC
18:24:31 <AnMaster> and what is it supposed to express
18:25:19 <cpressey> Surprise and alarm at unearthing of historical computer science artefacts.
18:25:55 <AnMaster> I thought it was well known that the S-Expressions weren't intended to be used for coding in lisp originally
18:26:12 <cpressey> MissPiggy: btw, the mixing of brackets and parens is one reason I'm not so keen on Clojure
18:26:39 <MissPiggy> cpressey, well .......... when it has a semantic meaning that's a BIT better, like [] for vectors
18:27:09 <MissPiggy> it's like people that write sh*t as if that is somehow less offensive than shit
18:27:24 <Deewiant> No, actually it's completely different :-P
18:27:56 <cpressey> Point taken. But it is probably a bit easier for your editor to highlight. I get into "just keep typing ) until you see the matched-paren-color move to the right place"
18:27:59 <AnMaster> also I found lisp without an editor that highlights the matching bracket to be very painful
18:28:25 <MissPiggy> AnMaster, just write it without any parens?
18:28:37 <AnMaster> MissPiggy, if it is lisp: wtf?
18:28:50 <AnMaster> lisp without parens... All comments?
18:28:55 <MissPiggy> read it like natural language, figuring out the ambiguity yourself
18:29:11 <cpressey> LISP without parens would be Logo :)
18:29:14 <AnMaster> MissPiggy, doesn't help the interpreter or compiler actually compile it
18:29:29 <AnMaster> MissPiggy, I meant it is painful when coding lisp
18:29:30 <MissPiggy> why would you NOT use an editor to write lisp on a computer?
18:29:41 <MissPiggy> well your situation is just ridiculous so there's no solution to it
18:29:48 <MissPiggy> I thought you were talking about on paper
18:29:48 <cpressey> LISP without parens would actually be fine, if all S-expressions started with an atom which determined the arity exactly
18:30:01 <AnMaster> MissPiggy, you must somehow have misread my comment
18:30:12 -!- scarf has quit (Remote host closed the connection).
18:30:31 <AnMaster> cpressey, hm I can think of a syntax for that. +/5 or such. for 5 parameters
18:31:03 <cpressey> AnMaster: ah, you mean encode the arity in the atom? Interesting, but probably a bit cumbersome.
18:31:04 <AnMaster> but really, I think in many cases it would be more irritating
18:31:13 <AnMaster> cpressey, well, wasn't that what you meant?
18:31:38 <cpressey> I was just thinking to store it in an internal table when the atom is defined
18:31:48 <AnMaster> or did you mean something like + 2 5 4 would be the same as (+ 5 4)
18:31:57 <AnMaster> cpressey, you forgot that some are n-ary, like +
18:32:34 <AnMaster> also any non-painful way to create lists
18:32:35 <cpressey> AnMaster: like that's necessary? Have them take 1 list as an argument. Or fix them at 2 arguments and apply them multiple times, like + 2 + 3 5
18:32:41 <AnMaster> sure, you could use lots of cons
18:32:45 <AnMaster> but would you really want that
18:32:57 <Deewiant> Would you really want to use LISP without brackets?
18:33:19 <Deewiant> If the answer to the above question is no: it doesn't matter. If it is yes: seek help.
18:33:22 <AnMaster> Deewiant, in some cases I think you can get too many brackets
18:33:34 <AnMaster> typically cond constructs comes to mind
18:33:44 <AnMaster> especially if it is at the end of a define or lambda or similar
18:33:56 <AnMaster> you often end up with ))))))) or so
18:34:08 <Deewiant> If you're going to make it optional, then you can just disallow it for the n-ary stuff.
18:34:20 <AnMaster> Deewiant, well, you could use indention to decide level
18:34:27 <cpressey> The beauty of the parens in LISP/Scheme is their regularity. The pain of the parens in LISP/Scheme is their regularity.
18:34:33 <AnMaster> still have parens for some cases
18:34:42 <AnMaster> like on one line where it makes more sense
18:35:04 <AnMaster> so you get a lisp/python indention mix
18:35:14 <AnMaster> not sure how good this idea would be in practise
18:35:31 <cpressey> I think I would prefer to define multiple syntaxes for a language: one which is "irregular but humane", like yr avg scripting language, and one which is "regular but inhumane" like Scheme or XML
18:35:34 <AnMaster> it doesn't sound too bad to allow the high level structure without parens
18:36:03 <AnMaster> cpressey, "average scripting language" isn't really humane
18:36:17 <AnMaster> because perl offsets the average so much
18:36:59 <cpressey> AnMaster: ha! Well, let's just say Perl is such an exceptional language, it's an outlier, and thus disregarded.
18:37:15 <cpressey> I should have said, "a decent scripting language"
18:37:16 <AnMaster> cpressey, a simple average wouldn't do that.
18:37:27 <Deewiant> The mode scripting language: Perl or PHP?
18:37:40 <AnMaster> cpressey, hint: it is run by beam
18:38:12 <cpressey> Erlang's not exactly my favourite for scripting
18:38:53 <cpressey> Yes, I've used it before, I've even built something to try to reduce the startup time
18:38:57 <AnMaster> cpressey, and yeah, the shutdown time is quite horrible for erlang in general. iirc it is less for escript though
18:39:53 <cpressey> Last I used escript it was just a simple wrapper that knew about hashbang lines
18:39:58 <AnMaster> cpressey, I never found startup time to be any issue for erlang. The issue is instead that it takes about half a second from q() in the repl to getting back to prompt
18:40:42 <AnMaster> cpressey, I tend to use a shell script wrapper usually for erlang programs. Since escript isn't suitable to directly invoke the main program, you would have to start a new erlang anyway
18:40:50 <AnMaster> at least if you need anything like sasl
18:41:14 <cpressey> I remember shutdown time being bad too, but startup was not great. The Erlang/OTP implementation was really meant for long-running systems, I concluded.
18:41:42 <AnMaster> cpressey, that is true. Idea: attach to existing erlang process
18:42:00 <cpressey> AnMaster: that was what I did -- search my site for erlaunch if you like :)
18:42:03 <AnMaster> however it has to be distributed.
18:42:15 <cpressey> erlaunch doesn't require it to be distributed.
18:42:58 <AnMaster> If erlang is in disk cache, the launch time is maybe 1/10 second? It isn't instantaneous, but I wouldn't call it slow
18:43:02 <AnMaster> the shutdown time however is slow
18:44:12 <AnMaster> hm, what is the hardest bit in implementing intercal? My guess is parsing it.
18:44:40 <AnMaster> once you have it in some nice AST or similar, it doesn't look too hard
18:45:35 <AnMaster> (not easy either, but compared to parsing it...)
19:05:42 <cpressey> Hm, I just realized, if you define a "humane" syntax on top of a Scheme-like syntax, you lose one of the nicest things about Scheme -- hygenic macros. Unless you have a predictable mapping between the 2 syntaxes. In which case, the argument for having 2 syntaxes at all is weakened.
19:06:11 <AnMaster> cpressey, what about those parser thingies in erlang?
19:06:25 <AnMaster> cpressey, you know, liked used for the mnesia query thingies
19:06:59 <cpressey> You have to know about the internal representation (AST) iirc, which is subject to change iirc
19:07:20 <AnMaster> then why is it documented iirc?
19:07:56 <cpressey> Because Ericsson is perfect in every way.
19:09:38 <AnMaster> cpressey, then why the way they handle floating point NaN and +/- inf?
19:19:37 <cpressey> ...Because they're trying to be "humane" by application of inconsistency?
19:21:11 <cpressey> I am eternally tempted to design a "real" language which "gets everything right". It's a bad temptation. It's better to stick to these weird little languages that intentionally get things "wrong"...
19:22:58 <olsner> just filter by features not present in any of your languages
19:23:09 <olsner> and the remaining features will make up the ultimate one
19:38:33 -!- gm|lap has joined.
19:39:02 <gm|lap> pikhq: you could do with a bot which tracks users' "sightings"
19:41:34 <cpressey> olsner: How about I just design a language which contains every possible feature, and let users decide.
19:42:50 <olsner> I think that has been tried and failed before
19:47:46 <cpressey> Well, here's one peeve anyway. Access to stack traces always seems to be such an afterthought. I want first-class stack traces.
19:48:59 <olsner> now there's an interesting idea
19:49:27 <oklopol> wouldn't that be sorta like continuations
19:49:53 <cpressey> Yes, it would. A lot like continuations, actually.
19:50:36 <cpressey> I could live with them being slightly less than first-class, for efficiency. But still, it's so rare to be able to handle them like normal objects.
19:51:53 <cpressey> Hm, maybe Ruby does something like that though -- I wouldn't put it past it.
19:53:04 -!- pikhq has set topic: RIP sun.com | 3 days since last ehird sighting | 1 days since last alise sighting | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
19:58:48 <pikhq> cpressey: That would actually be continuations with transparency, really.
20:03:13 -!- augur has quit (Ping timeout: 264 seconds).
20:05:21 <oklopol> why not check the logs for when tusho was last seen
20:06:26 <cpressey> Deewiant: yes, and it's interface is passable I suppose, but I still consider it an afterthought.
20:08:13 <cpressey> In both, it looks like you can only get a stack trace after an exception is caught, for example.
20:18:40 <pikhq> C, arguably, has them more first-class. "Getcontext" lets you start accessing the stack. From there, enjoy non-portable code. :P
20:20:19 <fizzie> Can you in Java just make any Throwable object and call .fillInStackTrace() to get access to it even without any throw-trickery? The method looks publicky.
20:20:46 <fizzie> And, yes, the constructor says it calls fillInStackTrace automagically.
20:27:09 * cpressey is very susprised Throwable isn't abstract
20:29:39 <cpressey> I still think the interface is kind of ugly, but it gets points for setStackTrace.
20:38:13 <FireFly> It seems there's a limit of how long the stack trace may be, though
20:38:26 <FireFly> At least it stops at 1024 here
20:49:42 <fizzie> I have... acquired this bigram language model built out of song lyrics; can't quite decide whether I want to go through the hassle of converting it into fungot's format. (It's in HTK's special graph-like lattice format, and the existing tools don't quite seem to do the conversion backwards from that to something simpler; but I can run it through HTK's random-sentence-generation tool to get a feel to what fungot'd make of it.)
20:49:43 <fungot> fizzie: you can get the consumer to just wait there, rather than character-port?, to keep the ai in certain circumstances.
20:49:52 -!- Pthing has quit (Remote host closed the connection).
20:50:29 <fizzie> Since it's just bigrams, the lyrics don't seem to make that much sense... but then again, neither do all supposedly serious songs I've heard.
20:50:46 <fizzie> "so long as their eyes / the ocean we'll see it's so i left now / and i want kiss my heaven on love comes to be free / sound of lonely voice is that / i could be it to the one so get married go / still no turning on take the new york new to save / just can't we had a troubled water what i fall / if there watching to the floor na na / mind lover / flip can't stop myself anymore"
20:50:47 <fizzie> "come on the weather / so / i've got to work / i can see you believe in your nightmares me / that / cuz i hate me you see / but on"
21:12:06 -!- MigoMipo has changed nick to MigoMipo_Zwei.
21:12:22 -!- MigoMipo_Zwei has changed nick to MigoMipo.
21:41:25 -!- augur has joined.
21:44:28 <uorygl> In my client, relatively many people have five-character amber-colored nicks.
21:45:32 <uorygl> Two five-letter all-lowercase amber nicks starting with A is far too many.
21:47:03 <uorygl> Probably because my client randomly assigned you that color.
21:47:54 <fizzie> I get different colors for augur, scarf, alise all; but augur and uorygl get the same pinkish color. XChat's color assignment is not random, though, or even pseudorandom: it's just the sum of the bytes in the nickname, modulo the number of available nick colors (9).
21:49:01 <augur> i have no colors for people
21:49:20 <uorygl> Isn't XChat graphical?
21:49:38 <uorygl> It ought to have about 16,777,216 possible nick colors.
21:49:51 <fizzie> There's a predefined list of 9 that should be sufficiently distinguishable, though.
21:50:14 <Asztal> it should use ColorMatch™
21:50:18 <uorygl> The problem with that is that you can't distinguish between two of them if they're identical.
21:51:37 <fizzie> It should use my gcolor.pm. (Do a google image search for a word, fetch the thumbnails for first 100 or so results, compute the HSV histograms and pick a suitable maximum, convert to a single color; that's able to even give colors of abstract concepts.)
21:55:30 <fizzie> #a3ba55 is the color of "irregularity", for example. (Based on irc logs; I have lost the code and the web-page about it, but it wouldn't be that tricky to reimplement if necessary.)
21:56:27 * uorygl ponders what color that is.
21:57:06 <MissPiggy> http://projectfortress.sun.com/Projects/Community/blog/ConditionalExpressions
21:57:06 <MissPiggy> I happen to favor Knuth's version, for four reasons:
21:57:07 <Asztal> data:text/html,<body bgcolor=a3ba55> :)
21:59:25 <uorygl> You know, it would make slightly more (or perhaps much less) sense to give colors as brightness, redness, blueness.
21:59:55 <fizzie> That's what video formats do.
22:00:25 <fizzie> "YCbCr or Y′CbCr is a family of color spaces used as a part of the color image pipeline in video and digital photography systems. Y′ is the luma component and CB and CR are the blue-difference and red-difference chroma components."
22:01:43 <fizzie> Admittedly that might be mostly because they can then use different resolutions for luminance and the chroma components.
22:02:04 <uorygl> Call those w, r, b. Then R = 2wr(1 - b), G = 2w(1 - r)(1 - b), and B = wb. Or something like that, anyway.
22:03:03 <uorygl> Hmm, let's forget those 2s.
22:03:45 <uorygl> No, let's leave those 2s.
22:04:21 <uorygl> Quick, someone implement that formula so we can see what happens.
22:04:49 <cpressey> MissPiggy: That page talks about encoding truth values as 0/1 as if it's something, uh... esoteric.
22:05:26 <MissPiggy> I'm going to make an esolang that uses 1 for true and 0 for false :D
22:08:47 <uorygl> The operators are addition, multiplication, and subtraction. It is an error for an operator to return a result other than 0, 1, or 2, or for it to take a 2 and also return a 2.
22:12:57 <cpressey> A quick game of boolean ring toss, anyone?
22:34:23 -!- kar8nga has quit (Remote host closed the connection).
22:35:16 -!- tombom has quit (Quit: Leaving).
22:37:23 -!- oerjan has joined.
22:39:54 <oerjan> <scarf> an intuitive view of it is "purely functional underload"
22:40:04 <oerjan> underload is pretty purely functional
22:40:27 <oerjan> you could consider the program result just a lazy string
22:41:12 <cpressey> MissPiggy, AnMaster: how about, when the first value of a list is an atom, and that atom has a value recorded in the "fixed arities" table, then parentheses can be (at your option) omitted. Otherwise they are required. It's not a great rule maybe, but it's relatively simple.
22:42:13 <cpressey> Of course, there's still special forms. Like let.
22:54:30 <AnMaster> cpressey, hm let takes a list doesn't it?
22:54:57 <augur> can i teach you about lecomte's categorial minimalism? :D
22:55:20 -!- MigoMipo has quit (Remote host closed the connection).
22:59:48 <cpressey> AnMaster: Yeah, and I've never liked that syntax much. But it's a special form, so I'm not sure what could be done with it.
23:00:17 <cpressey> You can leave out the parens around the let itself
23:00:25 <cpressey> But the bindings list still needs them
23:01:22 <oerjan> <cpressey> AnMaster: ha! Well, let's just say Perl is such an exceptional language, it's an outlier, and thus disregarded.
23:01:32 <oerjan> median _is_ a way to remove outliers, you know
23:01:45 <cpressey> Maybe introduce an arity-3 form called = that just does one binding. Then you can say: = name value = name2 value2 expr
23:02:55 <cpressey> Then let* becomes a problem, but whatever
23:04:07 <oerjan> <cpressey> I am eternally tempted to design a "real" language which "gets everything right". It's a bad temptation. It's better to stick to these weird little languages that intentionally get things "wrong"...
23:04:23 <oerjan> obviously the problem is that the everythings contradict each other
23:05:36 <oerjan> or become undecidable, like when trying to make a type system that has every feature
23:06:29 <cpressey> oerjan: I'm sure that's not the only problem.
23:06:53 <oerjan> ok but it's an obvious one
23:07:38 <oerjan> (well obvious after a few people have tried anyhow)
23:08:09 -!- BeholdMyGlory has quit (Read error: Connection reset by peer).
23:08:29 <cpressey> I fail to see how much more wrong it is to having an undecidable type system, than to have an undecidable execution model, which is essentially a given.
23:08:51 -!- FireFly has quit (Quit: Leaving).
23:09:15 <cpressey> Maybe it shouldn't be a given, but at least in the modern world, it is.
23:09:30 <oerjan> because an undecidable type system won't even get through the compilation stage
23:10:27 <cpressey> I know. But so what? We just blame that on the programmer, like C++ templates, and move on.
23:10:57 <cpressey> Unless you mean, won't *ever* get through the compilation stage. Then I suppose we have a problem.
23:11:23 <oerjan> with enough features that should be easy enough to achieve :D
23:12:14 <pikhq> cpressey: C++'s type system makes C++ *parsing* undecidable.
23:12:29 <pikhq> Because you have to know the types of things to parse C++.
23:12:45 <pikhq> (the same is true of C, *but* C typing is trivial...)
23:13:06 <oerjan> <oklopol> why not check the logs for when tusho was last seen <-- he calls himself uorygl these days
23:14:18 <Sgeo> tusho == ehird
23:14:23 <Sgeo> Warrigal == uorygl
23:14:24 <cpressey> Maybe in 50 years we'll have advanced to the point where we laugh at the fact that we once did everything in Turing-complete languages, like we now laugh at the fact that we once did everything in assembly.
23:14:36 <AnMaster> <pikhq> (the same is true of C, *but* C typing is trivial...) <--- also, iirc the ramifications of it are less in C than C++
23:14:47 <oerjan> Sgeo: whoops, i was sure tusho was one of ihope's
23:15:10 <oerjan> oh i'm thinking of kerlo
23:15:20 <pikhq> AnMaster: Slightly.
23:15:21 <AnMaster> pikhq, you don't have anything close to that example in the C++ FQA for C.
23:15:40 <pikhq> AnMaster: foo(bar) can *only* be a function call in C, after all.
23:15:48 <AnMaster> fizzie, http://yosefk.com/c++fqa/web-vs-c++.html#misfeature-2
23:16:11 <Sgeo> Everyone should program in C--!
23:16:16 <oerjan> unless i'm wrong about that one too
23:16:28 <Sgeo> I think kerlo == Warrigal
23:16:36 <AnMaster> pikhq, and yes, variables can be one of three types basically: scalars, pointers, arrays.
23:16:37 <Sgeo> And Warrigal == ihope
23:16:51 <oerjan> the last one is certain at least
23:17:02 <pikhq> AnMaster: Scalars, pointers, arrays, collections of variables.
23:17:20 <AnMaster> pikhq, oh structs on the stack
23:18:24 <AnMaster> pikhq, still, fairly trivial to figure out what things can be
23:19:03 <AnMaster> pikhq, like * for multiplication can never look * for deref (or the reverse)
23:19:13 <AnMaster> even if you don't know the types
23:19:18 <cpressey> AnMaster: Nice site at that link, thanks.
23:19:26 <AnMaster> cpressey, you didn't know about it?
23:21:15 <pikhq> AnMaster: Yeah; you only need to know context for a few very specific things.
23:21:21 <pikhq> (basically, whether or not something is a type or variable)
23:22:49 <AnMaster> different results if x is a type or a variable
23:22:57 <pikhq> Yeah, foo * bar changes based on whether or not foo is a type.
23:22:59 <AnMaster> but that is, if there is nothing in wrong of x
23:23:17 <AnMaster> it doesn't apply if it happens anywhere but at the start of a statement
23:23:30 <pikhq> Also, "const foo".
23:23:31 <AnMaster> and in C89, only at the first statements in a given function
23:23:42 <AnMaster> pikhq, that only makes sense if foo is a type?
23:24:06 <oerjan> foo * bar looks like a useless expression statement though, even if legal...
23:24:24 <AnMaster> oerjan, depends on if foo and bar have side effects ;P
23:24:47 <pikhq> AnMaster: Actually, "const foo" might be equivalent to "const int foo". :P
23:24:48 <oerjan> still not particularly useful
23:24:49 <AnMaster> oerjan, it is however legal. GCC at least will issue a warning about unused value or something like that
23:25:19 <pikhq> AnMaster: Still syntax.
23:25:19 <AnMaster> pikhq, pretty sure it isn't even allowed nowdays?
23:25:34 <oerjan> well it's obviously legal since it would need a specific exception to make it not so...
23:25:39 <pikhq> C99 requires a note that it's deprecated.
23:25:54 <AnMaster> <oerjan> well it's obviously legal since it would need a specific exception to make it not so... <-- ?
23:26:09 <pikhq> And it's an error if used for a function declaration.
23:26:52 <AnMaster> anyway, the situations are rare. x * y = z; for example isn't ambiguous at all
23:27:23 <oerjan> AnMaster: all expressions are statements, it would be messy to except only those that are apparently useless
23:27:40 <AnMaster> if it could be the comma operator
23:28:12 <pikhq> AnMaster: That's either x times y, then z, or an x pointer named y and an x named z.
23:28:42 <AnMaster> oerjan, "This language prohibits useless statements and programs"?
23:28:45 <cpressey> I, Gcc the Great and Terrible, have judged your entire program to be apparently useless, and refuse to compile it.
23:28:45 <oerjan> for example && and || could obviously be useful with statements
23:29:38 <oerjan> AnMaster: not particularly well-defined, that...
23:29:40 <AnMaster> pikhq, x * y, * z should be non-ambig though
23:31:02 <oerjan> AnMaster: actually x * y = z could be a declaration with initialization, couldn't it
23:31:10 <pikhq> AnMaster: x times y, then dereference z, or x pointer y, x pointer z.
23:32:39 <AnMaster> <oerjan> AnMaster: actually x * y = z could be a declaration with initialization, couldn't it <-- well, yes that is the only thing it could be afaik?
23:33:04 <AnMaster> oerjan, what else could it be?
23:33:04 <oerjan> oh wait right x * y isn't an lvalue
23:33:24 * oerjan thought that backwards
23:33:28 <cpressey> yeah! What do you think this is, C++?
23:33:33 <AnMaster> the term "lvalue" and such always confuse me
23:33:56 <AnMaster> I mean, it much clearer if you just think about it at another level
23:34:06 <oerjan> AnMaster: actually took me a moment to remember the term.
23:34:17 <cpressey> Actually, I'm not sure you could make operator* return a reference in C++. But it sounds like the kind of thing C++ will let you do.
23:35:30 <AnMaster> pikhq, care to link you lambda header file for C again?
23:35:46 <cpressey> I avoid it now, too, thankfully.
23:36:05 <cpressey> No matter how much Python bugs me, I look back and my C++ days, and I don't look back.
23:36:27 <cpressey> Ach, and I've never used C++ for a personal project. That would be Wrong.
23:36:56 <AnMaster> if it wasn't that parsing intercal is such a pain I would probably try to write a bignum intercal interpreter in erlang
23:37:40 <AnMaster> but looking at the lengths c-intercal goes to for parsing... I doubt I even want to try that
23:38:42 <pikhq> cpressey: C++ operators are only required to return a value and be appropriately adic.
23:40:11 <AnMaster> cpressey, why not make the operator* return a pointer?
23:40:33 <AnMaster> that way you could make a pointer class you could never dereference
23:41:03 <AnMaster> if you can override & too, then you could make a class you can never take the address of!
23:41:57 <cpressey> AnMaster: given the various attempts to build "smart pointers" to work around the language's primitive memory model, I wouldn't be surprised if it has been done.
23:42:28 -!- coppro has joined.
23:42:30 <AnMaster> hm I want a circle of pointers in C
23:42:30 <fizzie> AnMaster, cpressey: That sort of stuff is done in the actual FAQ, at http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.25
23:42:39 <cpressey> Then we can x * y = z to our hearts' content.
23:48:12 * uorygl = ihope = kerlo = Warrigal = Tanner Swett
23:48:22 <uorygl> ehird = tusho = alise = Elliott Hird
23:49:35 <fizzie> union p { union p *p; } p = { &p }; ... but maybe that doesn't quite count.
23:49:52 <Sgeo> Is it really a good idea to talk real names in this channel
23:50:05 <coppro> it doesn't really matter
23:50:32 <pikhq> Sgeo: Josiah 'pikhq' Worcester.
23:52:27 <oerjan> uorygl: um Tanner Swett is your real name?
23:54:04 <Sgeo> As far as anyone knows
23:55:44 * oerjan didn't know tanner was a first name
23:56:41 * coppro knows two Tanners in real life
23:57:30 <oerjan> hm i found a Tanner Swett on linkedin, but i doubt uorygl has joined university yet
23:57:37 <fizzie> oerjan: Maybe it was a honorific, in this case.
23:58:03 -!- pikhq has quit (Read error: Connection reset by peer).
23:58:10 <oerjan> you mean he's very bronze-colored?
23:59:03 <fizzie> oerjan: Yes; it's the penultimate step before graduating to Tannest.
23:59:57 <fizzie> There are three Tanner Swetts visible in the book of faces.