For those of you demanding a reason Lua is shit,
consider the following code:
local fh = io.open(filename, "r")
while true do
line = fh:read("*l")
if line == nil then break end
f(line)
end
That is a fucking eyesore. The whole point of a while loop is to embed the exit condition in it. When you have to make an infinite loop and then use an if statement with a break to accomplish what you can normally do with something like:
> require "antigravity"
stdin:1: module 'antigravity' not found
fuck this shit, where's my xkcd reference
Name:
Anonymous2011-09-30 23:38
Not being able do something like
while(var = f(x)) {
/* WHY CAN'T LUA DO THIS? */
}
IS A HUGE PROBLEM. You can't do it in for or if statements either. It just ends up looking way more cluttered and ugly.
method to get an iterator that will return the lines in a file. So the code in the op can be written as:
local fh = io.open(filename, "r")
if fh == nil then
error("I couldn't open "..filename.." for reading bro\n")
end
for line in fh:lines() do
f(line)
end
And if you want to make a superduperawesome iterator utility library, you can make it more compact and unreadibly functionaly:
function iter_lib.foreach(iter, fn)
for value in iter do
fn(value)
end
end
function iter_lib.mask(iter, fn)
return function()
local value = iter()
if value == nil then return nil end
return fn(value)
end
end
Using the iterator does not necessarily load the entire file into memory at once. file:lines() returns a function, which you can call repeatedly, and every time you call it, it will return one line from the file. When there are no more lines to read, the function will return nil. A reasonable implementation of file:lines() would return a closure that line buffers the file.
Lua does have the extra overhead of interning the read string into a string table though, which would make the process or reading in a file a tad slower than normal.
>>12 is right, just use iterators or HOF or whatever.
However, >>1 is right but for other reasons. Something I can't stand is the general "string-oriented programming". In Lua, you have the "typeof" function that returns the type of the thing as a string. One might say it is a very minor issue, but one find that again in third party libraries, with worse consequences. For instance:
frame.fgcolor = "255 0 0"
frame.size = EIGHTHxEIGHTH
frame.title = "This is the frame"
frame.margin = "10x10"
This is taken from frame.wlua, an exemple file for the iup library. Geometries and colors are passed as strings? Unfogivable
Yeah, the typeof thing is a little clunky, but because strings are always unique, string equality can be resolved via pointer/object-id/whatever, making it just as efficient as returning an integer type id.
That is a horrendous library though. Why did they do that? So if you wanted to parameterize the foreground color, you would have to do:
frame.fgcolor = string.format("%d %d %d", r, g, b)
Something that really pisses me off is that Mike Pall put so much effort into making an extremely efficient JITC interpreter for Lua instead of a decent language.
>>21
It returns a ``map object'', which isn't a proper replacement for a lazy list, if that was the intention, as you can't even get an element from that crap without using a for-loop. Which is probably the whole principle of the thing, making GvR feel like he is sticking it those treacherous functional programmers who tricked him into putting lambda in his language.
>>25 About 12 years ago, Python aquired lambda, reduce(), filter() and map(), courtesy of (I believe) a Lisp hacker who missed them and submitted working patches. But, despite of the PR value, I think these features should be cut from Python 3000.
>>26 b = map(lambda x:f(x)+1, a)[code]
vs
[code]b = [f(x)+1 for x in a]
The only reason why the latter is shorter is because there's no shorthand for writing anonymous functions, such as -> x {f(x)+1}, or even ->{f(\x)+1}. But noooo, that's not going to happen, since Fucktard von Ransom thinks lambda is evil. Too much syntactic sugar makes your teeth rot. Ever thought about that?
I do think Guido van Rossum is a scumbag and a fool.
Name:
SFBE2011-10-01 20:24
PENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRTPENIS GOES IN ASS CRACK WHORES SHIT FACE FUCK HEADED ASS CUNT COCK SUCKING SLUTS PEEING ON THE TV WATCH A GROWN MAN SHIT ON A CACTIS WHILE EATING GRAPE FUCKING ASSWHORE SHIT ON MY TELEVISION I PEE ON BRICKS FUCKING CUNT SHIT PAKI JEW NIGGER SLUT I CAN'T FUCKING STOP SHITTING ON THE PATIO WHILE SMOKING A CAT ALARM BURGLAR BURGER LETTUCE TOMATO SITTING IN MY TOILET FERMENTED IN FRESH SHIT I CANT FUCKING BELIEVE IM NOT SPREADING BUTTER ON A WHALE'S ANUS FUCKFACE SHIT BIRD PEEING ON THE FENCE WHILE I JACK OFF IN A MOUND OF DIRT
>>29
youre amazing post, and my personal experiences have convinced me.
also >>31luaisn't a programming language contrary to popular belief it is a syntactical paradigm like html
>>35
Who would give away free ringtones? How would they earn back the money‽
Next you'll tell me they have wallpapers as well! But you're not fooling me!