Comment by fainpul

4 months ago

I assume this is the same as this?

  # python
  [127 * sin(x * tau * freq / samplerate) for x in range(samplerate)]

For that matter,

  # python
  from numpy import sin, arange, pi
  127 * sin(arange(samplerate) * 2 * pi * freq / samplerate)

  • for that matter, i always wonder how people mistake python for numpy :) they have surprisingly little in common.

    but enough talking about languages that suck. let's talk about python!

    i'm not some braniac on a nerd patrol, i'm a simple guy and i write simple programs, so i need simple things. let's say i want an identity matrix of order x*x.

    nothing simpler. i just chose one of 6 versions of python found on my system, create a venv, activate it, pip install numpy (and a terabyte of its dependencies), and that's it - i got my matrix straight away. i absolutely love it:

      np.tile(np.concatenate([[1],x*[0]]),x)[:x*x].reshape(*2*[x])
    

    and now lets see just how obscure and unreadable exactly the same thing looks in k:

      (2#x)#1,x#0
    

    no wonder innocent people end up with brain aneurisms and nervous breakdowns.

Pretty much, yeah! The difference is that in Python the function that calculates a single value looks like:

    foo(x)

...while the function that calculates a batch of values looks like:

    [foo(x) for x in somelist]

Meanwhile in Lil (and I'd guess APL and K), the one function works in both situations.

You can get some nice speed-ups in Python by pushing iteration into a list comprehension, because it's more specialised in the byte-code than a for loop. It's a lot easier in Lil, since it often Just Works.

  • And in Julia it’s foo.(x).

    • julia is cool, hands down.

      only typical k binary will be less than 200kb and doesn't need stdlib. it still needs a few syscalls, but we're working on that.

      and julia has this small and insignificant dependency called llvm. i bullshit you not:

        kelas@prng ~ % cd /opt/llvm-project
        kelas@prng llvm-project % du -hd0
         14G .
        kelas@prng llvm-project %