00:00 - 11:0011:00 - 17:00

11:07 AM
From my understanding it nests the old number in another level of f(x)

So I want to put in a church numeral, say 1 (which is λf.λx.f x)
Where do I put it in
@TuxCopter Halp if you know the answer?

11:26 AM
@Qwerp-Derp You just apply the successor function to the numeral: (λn.λf.λx.f (n f x)) ( λf.λx.f x) so you "put it in" n: λf.λx.f (( λf.λx.f x) f x) which reduces to λf.λx.f (f x) which is 2.

Oh cool
Wait where does the beginning λn go

0

Create an interpolation helper This is similar to this other proposal of mine. I won't delete that one since it has gotten good feedback, and I might come back to it. I think maybe this one is better. If this one is posted then I'll delete the other one (they will almost be duplicates. A polyno...

Looking at the SO dev survey
Coffeescript is dying, it's slowly getting replaced by ECMAScript6 probably

Kinda, I'm wondering how Laikoni's thing works
Cause I understand you replace n with your Church numeral
But how does the beginning λn get removed

11:40 AM
That's how you apply a lambda term.

Oh
So is this how it works?
  λnfx.f(nfx)
= λfx.f((λfx.fx)fx)
= λfx.f(fx)

No. Laikoni applied the successor term to 1. Your first line is missing that.

??
Oh
  (λnfx.f(nfx))(λfx.fx)
= λfx.f((λfx.fx)fx)
= λfx.f(fx)
So like that right?
Ah I understand now, cause the two things in Laikoni's post looked like two separate things and I got confuse

Yeah.

You'd have to write it (λnfx.f(nfx))(λfx.fx)

11:52 AM
Oh so like a function call right

That's true, the scope of a lambda reaches as far right as possible, so you need parens around the successor function.

  ((λmnfx.mf(nfx))(λfx.f(fx)))(λfx.f(fx))
= (λnfx.((λfx.f(fx))f(nfx))(λfx.f(fx))
What's the next stage?

@Qwerp-Derp You might need some α-conversion for that
(i.e., change your variable names to avoid conflicts)

Which variable names do I change

The ones in the second function (the number)

11:57 AM
Oh

But yeah, that's why I use de Bruijn indices whenever I lambda calculus :P

So something like this?
  ((λmnfx.mf(nfx))(λfx.f(fx)))(λfx.f(fx))
= (λnfx.((λfx.f(fx))(f(nfx)))(λfx.f(fx))
= (λnfx.((λgy.g(gy))(f(nfx)))(λfx.f(fx))
I changed it to g and y

idk, just change all the variable names to something different

But I want to solve the inner thing first
Do I just sub in g for the f outside it?

Lemme figure it out

11:59 AM
Chance all the names right at the start. Makes things easier.

@Qwerp-Derp The parents around (f(nfx)) are wrong as far as I can tell

Is this valid alpha-conversion?
  ((λmnfx.mf(nfx))(λfx.f(fx)))(λfx.f(fx))
= ((λmnfx.mf(nfx))(λab.a(ab)))(λcd.c(cd))
I think I haven't changed anything vital
@LegionMammal978 De Bruijn indices?
Show me

((λmnfx.mf(nfx))(λfx.f(fx)))(λfx.f(fx))
= (λλλλ42(321))(λλ1(12))(λλ2(21))
= (λλλ(λλ1(12))2(321))(λλ2(21))
= (λλλ(λ1(13))(321))(λλ2(21))
= (λλλ321(3212))(λλ2(21))
= (λabc.abc(abcb))(λde.d(de))
Pretty much, you replace each variable by its index on the stack

Ah
So is this not solved yet?

12:03 PM
@Qwerp-Derp seems right to me

> = (λabc.abc(abcb))(λde.d(de))

And then I sub in the final function?

yup
> = λfx.f(fx)(f(fx)f)

@LegionMammal978 I think this is right:
  (λλλ321(3212))(λλ2(21))
= λλ(λλ2(21))21((λλ2(21))212)

@LegionMammal978 Why are the indices of the last two terms on the second line different?

12:07 PM
@Zgarb ???
Oh noes, I messed up

Is this right?
  ((λmnfx.mf(nfx))(λfx.f(fx)))(λfx.f(fx))
= (λλλλ42(321))(λλ2(21))(λλ2(21))
= (λλλ(λλ2(21))2(321))(λλ2(21))
= (λλλ2(2(321)))(λλ2(21))

@Qwerp-Derp Yes.

Orrite I think I got it
  ((λmnfx.mf(nfx))(λfx.f(fx)))(λfx.f(fx))
= (λλλλ42(321))(λλ2(21))(λλ2(21))
= (λλλ(λλ2(21))2(321))(λλ2(21))
= (λλλ2(2(321)))(λλ2(21))
= (λλ2(2((λλ2(21))21)))
= (λλ2(2(2(21))))

  ((λmnfx.mf(nfx))(λfx.f(fx)))(λfx.f(fx))
= (λλλλ42(321))(λλ2(21))(λλ2(21))
= (λλλ(λλ2(21))2(321))(λλ2(21))
= (λλλ(λ3(31))(321))(λλ2(21))
= (λλλ2(2(321)))(λλ2(21))
= λλ2(2((λλ2(21))21))
= λλ2(2((λ3(31))1))
= λλ2(2(2(21)))
= λfx.f(f(f(fx)))
Yup

gtg

12:11 PM
Wait, you have an extra λ at the start
You didn't β-reduce correctly, shame on you
What is this function supposed to do, again?
So λλλλ42(321) is add, and λλλ2(2(321)) is add2?
Ima try and figure out an infinite Church stream of λ1s now
2
Hmm, it comes down to finding a function f that obeys the following:
f(λλ2)      = λλ1
f(λλ1)(λλ2) = λ1
f(λλ1)(λλ1) = f

12:40 PM
There, figured it out
f = (λλ1(λλ1)(λ1(λ1)(33)))(λλ1(λλ1)(λ1(λ1)(33)))
Really, you can make an infinite stream of anything by replacing (λ1) with the appropriate value

Friendly reminder that voting for the Best Of will end in a bit over 11 hours.
4

hmm, I should add Church numerals to my SKI thing
anyway, 0 = KI and increment = S(S(KS)K)
aka successor

1:10 PM
@MartinEnder That took me a while to read. My brain ignores every single-line bold message in chat, because they are usually just timestamps.

1:29 PM
1

Challenge Summary In summary, the challenge is to provide the glider synthesis for a Game of Life configuration, which is your input. What does this mean? Well, firstly, let me explain a few terms. By Game of Life, I mean Conway's Game of Life. If you don't know what this is, you can read t...

1 hour later…
2:31 PM
alright guys we have 9 hours to upvote my entry to the kansas city shuffle another 12 times

2:47 PM
codegolf.stackexchange.com/a/4491/60884 As someone who doesn't do C, would main(){puts("2012"=="2012"?"2012":"2012");} also be valid?

0

Avoiding Averages Given a non-empty list of positive integers, reorder the list such that for every pair of indices, the average of the values at those indices is not contained in any index between them. Rules This is code-golf so the shortest code wins.

Couldn't you change that to main(){puts("2012"=="2012"?"20512":"2012");}and have it print 20512?

oh right
I feel dumb now

Did the MathJax bug with code blocks and search results ever get fixed?

3:04 PM
@Mego i bellieve so
Aha:
@200_success Delimiters changed. Enjoy! — Pops ♦ Apr 7 '14 at 19:47

3:27 PM
I think it's pretty funny that my RSA cop posts were super controversial, but people liked the robber's posts @Sp3000
@GabrielBenamy you can't compare strings with ==

I'm pretty sure liking is equivalent to starring things here.

that is, not generally
it compares the address of the string
but nothing prevents the compiler from putting one string in a different location than the other

3:39 PM
I wondered why my browser ran out of memory when I tried to change my twitter avatar, until I noticed that I rendered my avatar as a 15,000 px² image.

3:59 PM
@mınxomaτ even then that's still only ~650 mb uncompressed, assuming 24bpp

My laptop has 2GB of RAM.

4:20 PM
Damn
Does it work properly

@mınxomaτ My sister's laptop is ALMOST the same as mine
except it has 2gb RAM instead of 4GB
and a slightly slower CPU

@NewMainPosts are we for real right now

@quartata I know that's a dupe of something

Yeah, it's called "Hello, World!".

4:31 PM
I don't know if I'd close it as a dupe of HW
A challenge that was also "print this thing N times" would be better

WHy do things get closed as duplicates of:
a. Hello world
b. Never gonna give you up

Because they were the first constant output challenges

Even though some of the outputs are completely different and can be optimized in different ways...

I can't find a "repeat this N times separated by newlines" challenge to use as a dupe target, though I'm sure we've had one

@wat There's no real structure to this one that can be exploited

4:42 PM
Huh, the TDM-GCC branch of DevCpp surpassed 10 million (took them 6 years) downloads this year.

aside from regular deflate compression
and having a goat printing built-in for some inane reason

@quartata That's true I guess

Because goats are funny!!!!11!1
Seriously, the people who run jokes into the ground ruin things for everyone. It really needs to stop. The goat stuff was funny at one point, but it's not even beating a dead horse anymore - they're punching a bottle of glue.

00:00 - 11:0011:00 - 17:00