#dev-general

1 messages ยท Page 194 of 1

old wyvern
#

ah

#

Brackeys is stopping?

ocean quartz
#

Yeah cryingblob

old wyvern
#

rip

heady birch
#

Traditional web ๐Ÿ™‚

lavish notch
#

I'm confused why he'd stop

#

There has to either be drama, or he's gotten bored

#

but he doesn't mention either of them

old wyvern
#

Maybe he has other things to do in life

ocean quartz
#

Yeah he just says he wants to do other things, he might come back in the future

onyx loom
#

who that

ocean quartz
#

The to go guy when it comes to games tutorials for unity

onyx loom
#

intriguing

old wyvern
#

Yup

steel heart
#

Arrays are op

ocean quartz
#

Curious question, I am running the application configuration on IJ, but the result is on a gradle run instead of the normal IJ terminal
Anyone know why?

distant sun
#

maybe because gradle runs it?

#

Any idea why random variables or even methods turn gray, even if they are used? https://i.imgur.com/4om4qcH.png
I use Material Oceanic and didn't had any issues on Java, only on kotlin

old wyvern
#

What does it say when you hover over them?

distant sun
#

var tokens: Double

#

I start to think it might be because of my theme but don't want to change it ๐Ÿคฃ

hot hull
#

It's your theme Gaby

#

If a variable isn't reasigned it'll be gray

#

If it is reasigned it'll be white reversed_fingerguns

distant sun
#

no

#

now refundedItems++ is also gray

hot hull
#

Uh what

#

Funky theme then

steel heart
#

Gandalf the gray

ocean quartz
#

Is there a way to get the debugger to step back? thonking

#

I guess no, gonna have to make a stop and rerun ๐Ÿ˜ซ

obtuse gale
#

I know that's a thing in Visual Studio Enterprise for C/C++... never heard about it in other places lol

ocean quartz
#

Yeah, I remember that on some C ide
Common IJ you're falling behind

#

I hate and love the debugging ๐Ÿ˜ซ

#

Someone kill me please

#

I've been searching for this thing for over an hour now and just found it was right where i was looking at

#

And it's done after 10 years, commonmark no longer trims spaces at the end and beginning

jovial warren
prisma wave
#

to acknowledge player digging

obtuse gale
#

(How does this work?)

#

lol

jovial warren
#

to acknowledge player digging
but it's 1.15+ (from what I've read), meaning it didn't always exist

#

@ocean quartz I don't think there's a way to step back since it's pretty much impossible, as when you advance, you're advancing the program's execution, and you can't just turn back the clock like that

obtuse gale
#

CTRL + Z

#

๐Ÿ‘Œ

jovial warren
#

Ctrl+Z doesn't exist at JVM runtime

obtuse gale
#

no shit sherlock

ocean quartz
#

It's not impossible, just not possible on IJ

jovial warren
#

afaik not possible with the JVM

prisma wave
#

my face when the server doesn't acknowledge my digging ๐Ÿ˜

jovial warren
#

also you still haven't reviewed my changes ๐Ÿ˜

ocean quartz
#

Me?

prisma wave
#

oh yeah lol

jovial warren
#

not you

prisma wave
#

forgot about that

#

no offense

jovial warren
#

mitten needs to review my MineKraft changes

astral quiver
#

Hi folks

#

Sad day

ocean quartz
#

Heyo

prisma wave
#

why sad

ocean quartz
#

What happened?

jovial warren
#

^

astral quiver
#

I found something that PDM does not cover

jovial warren
#

that's an oof

#

what is it?

prisma wave
#

oh dear

astral quiver
#

I send you in private @prisma wave

#

is that the Maven S U C K S

prisma wave
#

in my server?

jovial warren
#

nah you've mentioned it now, at least share it with the gang

astral quiver
#

no, in discord private

prisma wave
#

๐Ÿ‘€

astral quiver
#

I will try to explaim here

#

as well

#

So, I found dependencies that in <dependency> the Scope is not provided

#

by that pom

jovial warren
#

I swear PDM doesn't even support Shitven lol

astral quiver
#

instead, looks like it is provided by the parent pom

#

I will send a sample for you folks

prisma wave
#

odd

#

It's supposed to cover parent poms correctly

astral quiver
#

But, the way that PDM does is looking into the <dependency>

jovial warren
#

since when did PDM support Maven

prisma wave
#

it supports maven repositories

#

since that's the standard

#

it doesn't have a maven plugin

#

yet

astral quiver
#

it's ?

jovial warren
#

nah don't bother making a Maven plugin, fuck Maven users xD

jovial warren
#

wat dis

prisma wave
#

Which dependencies get skipped?

astral quiver
#

all

jovial warren
#

also is the Maven thingy gonna be like <scope>pdm</scope> or some shit?

prisma wave
#

no

#

hm

#

maybe

#

nvm

jovial warren
#

scope = good idea

prisma wave
#

maven plugin is effort anyway

astral quiver
#

Do you know what could be @prisma wave ?

prisma wave
#

possibly

astral quiver
#

Currently, I'm doing a stupid thing here, I'm making the Gradle plugin use Maven Aether

#

But is not working so well with my implementation, sad

jovial warren
#

"I'm doing I stupid that here"

  • DevSrSouza, 2020
astral quiver
#

thingggg

jovial warren
#

is that "I" supposed to be an "a"?

#

"I'm doing a stupid thing here" sounds more appropriate

#

King Nitpick at work

prisma wave
#

@astral quiver are you declaring a dependency directly on that artifact?

ocean quartz
prisma wave
#

or is it a parent pom

#

idk what the relevance of that is but nice

astral quiver
#

parent pom

jovial warren
#

wat dis @ocean quartz

#

also using legacy codes instead of the new chat component system smh

astral quiver
#

child pom I guess is the right name to it

#

child dependency*******

prisma wave
#

hmm

#

send your buildscript

ocean quartz
#

@jovial warren My parser, commonmark would trim spaces so for example if i parse Hello then there and combine both it'd look like Hellothere
And that is literally the point of the method i am using, legacy lol

jovial warren
#

ah okay

astral quiver
#

@prisma wave

dependencies {
    compileOnly(kotlin("stdlib-jdk8"))

    // script
    pdm(kotlin("scripting-jvm").toString(), excluding)
    pdm(kotlin("scripting-dependencies").toString(), excluding)
    pdm(kotlin("scripting-dependencies-maven").toString(), excluding)

    compileOnly(Dep.spigot)
    compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9")

    compileOnly(Dep.kotlinBukkitAPI.core, changing)
    compileOnly(Dep.kotlinBukkitAPI.exposed, changing)
    compileOnly(Dep.kotlinBukkitAPI.plugins, changing)
    compileOnly(Dep.kotlinBukkitAPI.serialization, changing)
}
jovial warren
#

ayyy my man be using Kotlin DSL

astral quiver
#

groovy #NotStonks

jovial warren
#

because DSL better

prisma wave
#

so where is the dependency on aether coming from?

astral quiver
#

scripting-dependencies-maven

jovial warren
#

also what's up with the toString() calls?

astral quiver
#

I guess does not have a extension for any when using configuration

#

I could not find one

prisma wave
#

dsl bad

astral quiver
#

kotlin() returns Any, but is a String

jovial warren
astral quiver
#

I'm don't know if is a issue with the submodules thing but the others dependencies is just fine

prisma wave
#

ยฏ_(ใƒ„)_/ยฏ

#

i will do some debugging tomorrow

#

the dependency process is very convoluted at the moment so it wouldn't surprise me if some things slipped past

astral quiver
#

But this type of thing that maven does, pdm supports it?

#

like, going up in the parent to retrieve the scope

prisma wave
#

it should

#

but maybe not very well in practice

distant sun
#

are there any ij plugins for kotlin I should install?

#

other than Kotlin

prisma wave
#

kotlin

#

not really

astral quiver
#

KotlinBukkitAPI Tooling fingerguns

distant sun
#

ok

onyx loom
#

kotlin mc dev plugin fingerguns

prisma wave
#

no

onyx loom
#

no
aj rn: โ˜น๏ธ

prisma wave
#

Don't trust anything made by aj

onyx loom
#

๐Ÿ˜‚

distant sun
#
                tokens += api.getEnchantments(item).entries
                    .filter { it.key.isRefundable }
                    .sumByDouble { it.key.refundRate * api.calcCost(it.key.name, 0, it.value) }

should i replace filter {}?

onyx loom
#

disgusting brackets

#

fun main(){

distant sun
#

hmm?

prisma wave
#

let main =>

distant sun
#

smh bm, halp

prisma wave
#

With?

distant sun
#

should i replace filter {}?

#

you said smth about not creating new collections

#

I guess sometimes that cant be avoided?

prisma wave
#

Oh

#

nah I think in this case trying to do it all in 1 line would hinder readability

#

however

#

if you're dealing with a lot of data, or a lot of operations it can be useful to use sequences instead of collections sometimes

#

since it's faster + less memory intensive

distant sun
#

there can be max 36 items on that inventory and items usually have 3 - 10 enchantments, may 15

prisma wave
#

yeah probably fine

distant sun
#

that are sequences though

prisma wave
#

?

distant sun
#

what*

prisma wave
#

ah

#

like java streams

#

but faster

#

I wrote a blog post about it but looks like it's been yeeted ๐Ÿ˜”

#

but basically, they process each element individually rather than making intermediate collections

#

like an iterator + loop

distant sun
#

uh

#
                sequence<MutableMap.MutableEntry<CEHandler, Int>> {  api.getEnchantments(item).entries }
                    .filter { it.key.isRefundable }
                    .sumByDouble { 2.0 }```
so like this?
prisma wave
#

nah

#

list.toSequence().blah

astral quiver
#

Maybe you could use Maven Aether just in the gradle plugin to do a better dependency resolution @prisma wave

#

Kotlin Sequence is really awesome

distant sun
#

is a map

prisma wave
#

entries is a collection

distant sun
#

ah, asSequence()

#

too many stuff, uhh

prisma wave
#

cheeky self promo

#

but this is quite good i think

distant sun
#

oh I remember your blog

#

the milf filter ๐Ÿคฃ

prisma wave
#

:))

astral quiver
#

Great article

prisma wave
#

ty

distant sun
astral quiver
#

I need to try to write ones

#

I have the feeling that the article should be really big

prisma wave
#

@distant sun which one

astral quiver
#

I don't know, maybe is fear to write

#

in english

distant sun
#

}.filter {

astral quiver
#

to so many people

prisma wave
#

๐Ÿ˜ฌ

#

@astral quiver i wouldn't worry about it too much

#

@distant sun more readable

distant sun
#

ew no

astral quiver
#

I guess, in this case, sequence is not the best

#

Or will @prisma wave ?

distant sun
#

interesting example tbh

prisma wave
#

very interesting

astral quiver
#

oh, storry, this is a article sample

prisma wave
#

yea

astral quiver
#

in this sequence, this is really more efficient @prisma wave ?

prisma wave
#

I think so

#

it's quite difficult to find good examples tbh

astral quiver
#

A good example would be like: first { it.age > 35 }

#

this could be a really good example

prisma wave
#

yeah I was trying to think of practical examples I guess

astral quiver
#

but, I guess, this is still more efficient then doing collections operations

prisma wave
#

indeed

astral quiver
#

Just want to think about it one sec

#

The problem is that Kotlin creates new collections everytime if I recall

prisma wave
#

correct

astral quiver
#

that could be needed in case like a linkedlist mutable implementation

#

because this operations use inline function

#

that I think is not the case for the Sequence

jovial warren
#

what are peoples' obsessions with doing thingys like this in Kotlin: kotlin fun myFunction(): Int { return 1 } instead of just ```kotlin
fun myFunction() = 1

#

expression functions = good

#

also challenge for you lot: try writing a program that prints the factorial of a given number n without running in to an integer overflow

prisma wave
#

expression functions = good
@jovial warren only in situations where readability isn't hindered. In that example a property without a backing field is probably better

jovial warren
#

yeah ik that's better in that case, but I was saying in general, people use single return thingys rather than expression functions

prisma wave
#

eh

#

I think situations where using an expression function would be better are quite limited

jovial warren
#

wat

prisma wave
#

I've seen very few situations where I've thought "you should use an expression function here"

#

they're very niche

#

possibly even a gimmick

#

but then again elara has them too, so can't be a hypocrite

jovial warren
#

also challenge for you lot: try writing a program that prints the factorial of a given number n without running in to an integer overflow
also do this

prisma wave
#

on it rn

jovial warren
#

what you using?

prisma wave
#

BigInteger?

#

lol

jovial warren
#

because I wanna find a tool I can use to just throw a program together

prisma wave
#

overflow is gonna be caused by the data type you're using

#

BigInteger effectively makes overflow impossible

jovial warren
#

yeah I figured that one out after I'd wrote my initial program

#

what tool you using? just regular IJ?

prisma wave
#

yeah

#

scratch file

jovial warren
#

oh wow I did a stupid and forgot to choose the "Kotlin DSL build script" option when making my new project

#

well, time to create a new project lol

prisma wave
#

smh

#

no overflow

#

ez

heady birch
#

I hate tcp

prisma wave
#

ok

heady birch
#

building my own

#

off of UDP

#

but it makes sure it arrives properly and in the same order

#

re invent the wheel

ocean quartz
heady birch
#

racis M

prisma wave
#

kotlinism

jovial warren
#

@prisma wave you actually have a better method than me lol

#

I used tail recursion in my original

prisma wave
#

im not sure fold is better

jovial warren
#

actually yeah maybe it isn't

prisma wave
#

according to my very accurate microbenchmarks normal recursion is the fastest

jovial warren
#

how is recursion faster than tail recursion?

prisma wave
#

ยฏ_(ใƒ„)_/ยฏ

jovial warren
#

according to Baeldung, tail recursion is like 36% faster on average

prisma wave
#

this is somewhat more accurate

#

but maybe it's just my implementation

jovial warren
#

show me

prisma wave
#

the tailrec one is basically copied from that article

jovial warren
#

because mine looks like this: ```kotlin
tailrec fun factorial(number: BigInteger, accumulator: BigInteger = BigInteger.ONE): BigInteger = when (number <= BigInteger.ONE) {
true -> number * accumulator
else -> factorial(number - BigInteger.ONE, number * accumulator)
}

#

also don't even ask

prisma wave
#

christ

jovial warren
#

and no that is not allman, it's just Discord wrapping text

ocean quartz
#

Probably one of those things that is faster the bigger it gets but slow if it's just a few iterations?

prisma wave
#

ยฏ_(ใƒ„)_/ยฏ

jovial warren
#

ยฏ_(ใƒ„)_/ยฏ

prisma wave
#

mine is testing 1000 times and taking the average

#

although the compiler might have optimised some of the calls out

#

since i'm not using jmh or anything

#

Go would never have this problem

#

every operation = 0.005ms

#

i just realised

#

a factorial function is O(n) not O(n!)

#

huh

jovial warren
#
tailrec fun BigInteger.factorial(accumulator: BigInteger = BigInteger.ONE): BigInteger = when (this <= BigInteger.ONE) {
    true -> this * accumulator
    else -> (this - BigInteger.ONE).factorial(this * accumulator)
}
```this is better xD
prisma wave
#

no it's not

jovial warren
#

yes it is

#

it's an extension function

#

I don't mean better in performance, I mean better than my last one

prisma wave
#

using when in place of a single if/else is gross

jovial warren
#

what are you on btw

prisma wave
#

?

jovial warren
#

using when in place of a single if/else is gross

prisma wave
#

it literally is

#

anti pattern as far as I'm concerned

jovial warren
#
if (thingy) {

} else {

}
```looks worse than ```kotlin
when (thingy) {
    true ->
    else ->
}
prisma wave
#

you wouldn't do ```java
switch (condition)
case true: break
case false: break
}

#

at least have true and false instead of true/else

jovial warren
#

no because switch is weird and overly verbose, when is nice and clean

prisma wave
#

how is it weird

jovial warren
#

how is it not

prisma wave
#

because it isn't?

jovial warren
#

it only works on constants and primitives

prisma wave
#

yes

#

because unlike when it doesn't compile to if else

#

it's a standard switch case implementation

#

anyway

#

when should only be used for 3 or more branches

jovial warren
#

in your opinion

#

unless you quote me somewhere in the specification

prisma wave
#

intellij suggests changing 3 if/elses to a when, but not 2

#

coincidence? i think not

empty flint
#
if (thingy) {

} else {

}
```looks worse than ```kotlin
when (thingy) {
    true ->
    else ->
}

@jovial warren

if (thingy)
{
}
else 
{
}

fingerguns

jovial warren
#

I mean, kotlin if (thingys) doThingys() else doOtherThingys() >```kotlin
when (thingys) {
true -> doThingys()
else -> doOtherThingys()
}

#

but single-line braced if-else statements look disgusting

prisma wave
#

if expressions should always have braces

jovial warren
#

again, another opinion that you're stating as fact

#

well I mean, you do use allman so that just explains it all I guess

prisma wave
#

it's not an opinion

#

it's a commonly regarded best practice

jovial warren
#

find it in the specification and I'll accept it as fact

#

also if it wasn't an opinion, single-line non-braced if statements wouldn't be a thing

prisma wave
#

bruh

#

specification doesn't define everything

#

find "arrow code bad" in the specification

jovial warren
#

also if it wasn't an opinion, single-line non-braced if statements wouldn't be a thing

prisma wave
#

you realise that mistakes can be made in language design

jovial warren
#

yeah, but Java did it before Kotlin, and Kotlin decided to keep it in

prisma wave
#

I highly doubt they would've deliberately added it had Java not had it

jovial warren
#

why wouldn't they've

prisma wave
#

because it's commonly regarded as a bad idea to use it

jovial warren
#

without single-liners, val x = if (condition) y else z wouldn't be a thing

#

which is basically Kotlin's answer to ternary operators

distant sun
#

ternary operators look better ๐Ÿคท

jovial warren
#

shut your mouth Gaby

prisma wave
#

I agree

distant sun
#

Noobs

jovial warren
#

I mean, I agree as well, but I can just see you waiting for an opportunity to chat more shit about how Java's better than Kotlin lol

distant sun
#

??

jovial warren
#

unless you've switched

prisma wave
#

Both are bad

distant sun
#

Dont

#

Is not that lol bombardy

ocean quartz
#

I agree, ternary is better

distant sun
#

Kotlin still sucks but hey, one time I dont say it and Im bullied ๐Ÿ˜”

jovial warren
#

shut your mouth

distant sun
#

๐Ÿคฃ

prisma wave
#

elara doesn't suck btw

#

Pinnacle of language design

jovial warren
#

you too

#

shut it

prisma wave
#

No

distant sun
#

๐Ÿšช

prisma wave
#

What elara doesn't have:

  • Ugly 1 line if statements
  • when ๐Ÿคฎ
  • Different syntax for variables and functions (very dumb)

What elara does have:

  • Union and intersection types with contract based type system ๐Ÿ˜
  • Concise syntax that doesn't encourage bad practices
  • functional programming masterrace
  • Actual pattern matching
jovial warren
#

wait Elara doesn't have one-liners, when or any other things that make me able to write significantly less code?

prisma wave
#

it has one liners

#

pattern matching > when

jovial warren
#

show example

prisma wave
#

And I literally said the syntax is concise

#

Of?

jovial warren
#

pattern matching

distant sun
#

Elara is like c

#

10 lines to split a string

jovial warren
#

seems legit

prisma wave
#

False

onyx loom
distant sun
#

and one "spltkn" function

prisma wave
#
match sender => {
    Player => sender.kill()
    CommandSender => sender sendMessage "you suck
}
empty flint
#

So I just spent the majority of two days reading through the brigadier lib and I gotta say, while it's hard to get into, once you do it's smooth as butter

prisma wave
#

Syntax not finalised

distant sun
#

tf is that

prisma wave
#

Also not the best example in the world

#

Pattern matching

#

Kinda

ocean quartz
#

Match is like ugly when

jovial warren
#

what is your obsession with =>

prisma wave
#

Clean

distant sun
#

With instances?

jovial warren
#

-> > =>

prisma wave
#

Not

#

@distant sun anything

#

patterns

distant sun
#

ugly

jovial warren
#

tf is match though

empty flint
#

What language uses =>??

prisma wave
#

pattern matching...

neon pike
#

Can someone help me with something quick... When making file defaults, if i add them in the file... i dont need to config.adddefault correct?

prisma wave
#

match

distant sun
#

js

jovial warren
#

What language uses =>??
JS

ocean quartz
#

Elara is cool and all, but it's pretty ugly, i really don't like what you guys did with the syntax, no parenthesis, too much => etc

jovial warren
#

^

prisma wave
#

Bruh

onyx loom
#

๐Ÿคฃ

distant sun
#

Parenthesis have their own role tbh

prisma wave
#

Parentheses are optional

distant sun
#

2 spaces for one parenthese?

prisma wave
#

That's different to "no paranthesies"

jovial warren
#

parentheses are optional?!?!

distant sun
#

And at the end you have "method "

prisma wave
#

Most of the time

heady birch
#

Ruby on Rails

#

Rails on Ruby

prisma wave
#

Elara on rails

jovial warren
#

Elara on fuck all lol

heady birch
#

๐Ÿ˜ณ

ocean quartz
#

Like
match sender => {
vs
match(sender) {

prisma wave
#

Although @ocean quartz I do agree that there are too many arrows, will try and remove them in some places

#

meh

heady birch
#

no No NO

distant sun
#

Whats next, indendation instead of semi colons or braces ??

prisma wave
#

Ideally it would be match sender {}

heady birch
#

The parenthesis are not required

prisma wave
#

Like rust :))

heady birch
#

^^^

#

^^^

distant sun
#

e w w

ocean quartz
#

And another thing that bothers me a lot is the use of let

heady birch
#

Any other language has it WRONG

prisma wave
#

another let hater

#

Here we go again

heady birch
#

Idk what that word means

onyx loom
#

let for variables PlusOne

#

let for functions MinusOne

distant sun
#

imagine function[function[function]]]

ocean quartz
#

Not hater, it just doesn't make sense for non english speakers

distant sun
#

Let is fine imo

prisma wave
#

@onyx loom why should functions be treated any differently to variables?

heady birch
#

Maybe they should be english ๐Ÿ™‚

jovial warren
#

let for variables = alright
let for functions = dog shit

distant sun
#

fun

onyx loom
#

imagine function[function[function]]]
@distant sun thats basically clojure but with [] ๐Ÿ™‚

heady birch
#

๐ŸŒ

jovial warren
#

fun > let @distant sun though

prisma wave
#

@jovial warren same question

jovial warren
#

because let is just no

distant sun
#

eh

prisma wave
#

That's not a very convincing reason

jovial warren
#

also, why shouldn't functions be different?

ocean quartz
#

Imo because a property shouldn't be treated like a function

heady birch
#

have procedure and functions

prisma wave
#

but if functions are first class, aren't they just variables?

jovial warren
#

variables store and hold thingys
functions do thingys

distant sun
#

"thisIsAFunction function()"

heady birch
#

or subroutine ๐Ÿ˜Œ

#

Or just eliminate functions

distant sun
#

Fr

heady birch
#

Have goto's with arguments ๐Ÿ™‚

surreal quarry
prisma wave
#

The point of functional programming is first class functions: functions aren't treated any differently to any other type. Therefore, why should they be declared any differently?

heady birch
#

Lol (a, b, c):
GOTO Lol(a, b, c)

#

MOV 0xa1

jovial warren
#

The point of functional programming is first class functions: functions aren't treated any differently to any other type. Therefore, why should they be declared any differently?
this is one of the things that turns me off of functional programming

prisma wave
#

bruh

#

Kotlin literally has first class functions

heady birch
#

If you can write assembly you can write pure binary

prisma wave
#

Map, filter, etc are all elements of functional programming

jovial warren
#

I don't mean first class functions are bad, I mean declaring variables and functions the same is bad

prisma wave
#

but why?

distant sun
#

Cuz it is.

jovial warren
#

because it gets confusing

prisma wave
#

If they're both identifiers + values, why should they be declared differently?

jovial warren
#

because it makes your code more readable

prisma wave
#

does it though?

jovial warren
#

because you should be able to easily distinguish between a variable and a function

heady birch
#

unless

#

you make all variables a function with a return type ๐Ÿ˜ฎ

prisma wave
#

First class functions

this is one of the things that turns me off of functional programming
@jovial warren

I don't mean first class functions are bad
@jovial warren

Also make your mind up lol

#

you can easily distinguish

#

By looking at the value

jovial warren
#

First class functions

@jovial warren

@jovial warren

Also make your mind up lol
I did make up my mind

#

I literally said that I meant by that original message that I meant first-class functions aren't bad, but your implementation of them is

prisma wave
#

What elara does is entirely possible in kotlin

#
val printHello = {
    println("Hello")
}```
#

having separate syntax for function declaration implies that they're separate things, even though they're not

jovial warren
#

that's an SAM-converted anonymous function, not a function declaration

prisma wave
#

It's a function

#

It makes a function with an identifier

jovial warren
#

also that code is not something that anyone does in Kotlin because you just don't do that

prisma wave
#

Why not?

heady birch
#

Ruby on rails vs spring

jovial warren
#

because it's bad

prisma wave
#

It's no different to kotlin fun printHello() { println("Hello") }

#

Why is it bad?

jovial warren
#

Ruby on rails vs spring
Spring better because it supports Kotlin

#

@prisma wave just look at that original thingy you sent

#

why isn't that bad

#

that's what I wanna know

heady birch
#

Kotlin + spring = ๐Ÿ™‚

jovial warren
#

@heady birch what the damn hell you been smoking this morning

heady birch
#

so your saying kotlin + spring = bad

#

ok

#

have it your way

jovial warren
#

wow

#

you just had to

#

Kotlin + Spring = good

prisma wave
#

Because it treats functions identically to any other values, and therefore makes passing functions around much more concise

heady birch
#

I have yet to experience its power

jovial warren
#

do you use Kotlin or not yet?

prisma wave
#

You could do ```
service.execute(printHello)

Instead of ```
service.execute(this::printHello)
jovial warren
#

I guess

prisma wave
#

If we're going to the extremes of not distinguishing between functions and variables, a variable could just be considered a function that returns itself

#

i.e a Supplier

heady birch
#

Heh ruby has "Gems"

jovial warren
#

ruby is a gem

prisma wave
#

Rustcrate unboxing

heady birch
#

Cargo > cmake > pip > gradle

prisma wave
#

babel > cargo

heady birch
#

What's the worst dependency manager (and dont say maven)

prisma wave
#

apt

heady birch
#

apt-get

#

aptitude

prisma wave
#

babel lint transpile prettify es2.5 fanciful ts compile

#

average js "user"

heady birch
#

People making nodejs websites with 600000 npm modules

jovial warren
#

apt-get?

#

oof

#

yum good

#

dnf good

heady birch
#

centos

jovial warren
#

RHEL > Debian

heady birch
#

red hat

#

enterprise

#

?

jovial warren
#

Red Hat Enterprise Linux

#

CentOS is basically the free version of it

heady birch
#

Java with spring embedded in the JRE

#

Hm

#

Thats not a bad idea actually

prisma wave
#

ElaraOS fork of windows xp

jovial warren
#

ElaraOS built from scratch in Elara?

prisma wave
#

No

#

Built in typescript transpiled to elara

heady birch
#

rust

prisma wave
#

Then compiled to go

jovial warren
#

also how will collections work in Elara?

prisma wave
#

Then compiled to native

#

persistent data structures

#

Hot

jovial warren
#

does abstraction work in Elara?

#

(I mean methods without implementations, like in interfaces)

prisma wave
#

interfaces are more of an OOP concept although I am considering adding them

#

Probably wouldn't be necessary

#

abstraction isn't a thing

#

Not needed

#

Contract based

jovial warren
#

if you add more OOP principles in to Elara then I might consider using it

prisma wave
#

meh

#

it has all the OOP you need

#

The rest is boilerplate

#

Messy

jovial warren
#

does it have all four key principles?

prisma wave
#

Kind of

jovial warren
#

those being:

  • Inheritance
  • Abstraction
  • Encapsulation
  • Polymorphism
prisma wave
#

Not in a traditional sense

#

But they are possible in a way

#

Although I'd argue those aren't exclusive to OOP

#

Probably the main OOP "feature" is the concept of a method

jovial warren
#

without those four key principles, you don't exactly have "all the OOP you need"

prisma wave
#

they can be replicated but they aren't specifically in the language

#

It's about as object oriented as Go is

#

Which is roughly "not entirely but kind of"

distant sun
#

how would you guys process the drops of blocks destroyed on an area - for an enchantment?

#

some are easy to handle, such as stone or ores + silktouch

ocean quartz
#

No longer using regex for color detection, using the inline parser instead for speed PogW
Test message &#000This is *Sparta*

#

the hex is currently outside because i won't make an html render for it

distant sun
#

Why html though

ocean quartz
#

Commonmark always does it to html, i just modify it to work with mc instead

ocean quartz
#
val alive: Int
  get() = mobs.filter { it.isAlive }.count()

fingerguns

#

It shouldn't, it's just filtering and counting the list that already exists

vast ore
#

Gosh anyone can help me?

#
local Player = Players.LocalPlayer or Players.PlayerAdded:Wait()

local Stats = Player:WaitForChild("Stats")
local Exp = Stats:WaitForChild("Exp")
local MaxExp = Stats:WaitForChild("MaxExp")

function lemon()
    script.Parent.Text = tostring("Exp :"..Exp.Value.." / "..MaxExp.Value)
end
lemon()
Exp.Changed:Connect(lemon)```
#

I'm stuck on this

ocean quartz
#

What even is this?

regal gale
#

Roblox - Lua programming

ocean quartz
#

Oooh interesting, @vast ore, I'd suggest asking in #development though i am not sure if anyone here is familiar with it

vast ore
#

**I fixed it already, Thanks anyway โค๏ธ **

#

I made it inside script when I had to use local script for local vars

#

Also if Lua is
Lua / Lua 5.1 ( Roblox Lua ) different langauge
So java is like
Java / Jave X ( Minecraft Java )??
Or if u learn java its for anything

obtuse gale
#

What the hell is Java X?

hot hull
#

Nah Java is just Java, it's just the spigot api that you learn which is specific to MC (and all other apis/libs you use)

tardy yarrow
#

Can someone help me

hot hull
#

We don't read minds so no

errant geyser
#

Hey Matt, have you had time to work on that MF rewrite so I can do my stuff with it yet

prisma wave
#
val alive: Int
  get() = mobs.filter { it.isAlive }.count()

fingerguns
@ocean quartz pretty sure count accepts a predicate to avoid making another collection

old wyvern
#

^

jovial warren
#

probably

old wyvern
#

Not probably

jovial warren
#

somebody remind me of what a predicate is lol

old wyvern
#

just a functional interface that denotes a condition

jovial warren
#

actually I know what a predicate is

#

yeah

old wyvern
#

The thing is

jovial warren
#

it's a thingy that accepts a thingy and returns a boolean

old wyvern
#

Kotlin has both lazy and eager "streams"

#

If you dont explicitly specify that you want to use the Sequence api, you dont get the same result as using Java streams

#

As in intermediate collections are made

jovial warren
#

most of the time, the benefits of sequences aren't all that worth it though

#

unless you're computing a lot of data, or doing something where performance is a massive deal

old wyvern
#

It is, when your collection is large* or you are operating frequently

#

๐Ÿคทโ€โ™‚๏ธ

prisma wave
#

Sequences massively reduce the number of operations and memory count when you have a lot of transformations

old wyvern
#

mhm

prisma wave
#

And there's no real downside to using them

#

Apart from no random access

jovial warren
#

yeah exactly what I said, worth it if you've got loads of data to compute or where performance makes a difference

old wyvern
#

Why did kotlin add the eager implementations? just to make collection transformation easier?

jovial warren
#

which ones are eager?

prisma wave
#

all the collection ones

#

Yeah probably

jovial warren
#

ah okay

#

and the sequence ones are lazy?

old wyvern
#

Collection#filter ...ect are eager

prisma wave
#

Yes

#

Having eager transformations are useful sometimes

old wyvern
#

You need to use Collection#asSequence to begin using the sequence api

jovial warren
#

isn't the difference that lazy means the data only gets used when it's needed, and eager means it basically uses as much data as it can

prisma wave
#

For simple stuff there won't be any noticable overhead

old wyvern
#

yes bard

prisma wave
#

eager evaluates as soon as possible

#

Lazy evaluates only when necessary

jovial warren
#

like I remember quantifiers in Regular Expressions being eager or lazy, eager meaning it takes as many as it can, giving back if it needs, and lazy means it only takes what it needs

prisma wave
#

Mhm

old wyvern
#

The Kotlin Sequence/ Java Streams do nothing unless you specify a terminal function

jovial warren
#

actually it's not eager in my case, it's greedy

#

(I mean it's referred to as "greedy" rather than "eager", but the same principles apply anyway)

old wyvern
#

Im pretty sure its reffered to as the "eager" implementation in this case

distant sun
#

egirl

old wyvern
#

eagerl

prisma wave
#

elaragirl

old wyvern
#

Elaragirl

jovial warren
#

lol

mystic horizon
#

I wanna make something cool but idk what to make :/

obtuse gale
#

oh

#

well

#

f that cucked my nitro boosts

pallid gale
#

o wb

jovial warren
#

hey btw @ocean quartz , I know it's getting a rewrite, but I was just wondering: does your framework support commands being @Components?

#

or is it likely to kick off about that

prisma wave
#

I don't see why it wouldn't

jovial warren
#

true

empty flint
#

Bruh, the jorel CommandAPI is like a work of art

#

holy fuck

remote goblet
#

@prisma wave how do you explain to someone the reason for using stuff like Gradle instead of just importing jars

old wyvern
#

Call 911

onyx loom
#

how do you explain to someone the reason for using stuff like Gradle instead of just importing jars
@remote goblet gradle go brrrrr

remote goblet
#

Maven go brr?

onyx loom
#

no

#

only gradle

hot hull
#

Maven go ewwwwwwwwwww

onyx loom
#

๐Ÿ˜‚

remote goblet
quiet depot
#

Maven go brr?
@remote goblet yes, maven go brr, gradle go brrrrr

obtuse gale
#

maven go ew gradle go br

prisma wave
#

@remote goblet fast building, extendable, makes dependency management easier

quiet depot
#

regarding why to use a build tool, I have a reason on my gradle guide

hot hull
#

Gradle: Your gun goes pew pew, mine goes brrrrrrrrrrrrrrrrrrrrrrr

prisma wave
#

Just use a load of terms like "platform agnostic" and "reproducible" to make yourself sound smart

old wyvern
remote goblet
old wyvern
#

ew

prisma wave
empty flint
#

Is there a way to force a subclass to implement either one method or another, but not both?

hot hull
#

Any reason why you want it to be forced?

quiet depot
#

Is there a way to force a subclass to implement either one method or another, but not both?
no

prisma wave
#

messy

quiet depot
#

use interfaces

prisma wave
#

Incredibly messy

hot hull
#

Just have both as default and use the one you want, ez claps

empty flint
#

idk how to do this actually other than having two different abstract classes

#

so here's the thing

prisma wave
#

I swear all of your questions are "how do I do this impossible hacky thing"

empty flint
#

I swear all of your questions are "how do I do this impossible hacky thing"
@prisma wave Yeah cuz I don't have to ask about the easy stuff ๐Ÿ˜›

#

It's survivor bias

#

Anyhow

old wyvern
#

Whats the point of having then implement either A or B?

empty flint
#

here's what I need to do and idk how to do it cleanly

prisma wave
#

Interface segregation principle

empty flint
#

there's this api with two methods. One takes a functional interface (Foo) -> Int

#

and one takes a functional interface (Foo) -> Unit

#

and I want my classes to implement either one but not both

#

and depending on which one is used, that method gets called

hot hull
#

Just have two methods, both be default and just call both?

#

And then you just implement either or in your class

empty flint
#

Yeah that's what I did but it feels messy

quiet depot
#

it is messy

#

use a mixin-esque pattern with two interfaces

#

thatโ€™ll yield the cleanest result imo

hot hull
#

What's that Piggy?

quiet depot
#

on phone, donโ€™t want to explain

#

best to look it up

#

donโ€™t look for java examples

empty flint
#

@hot hull literally took me 2s to google mixin java ๐Ÿ˜›

hot hull
#

I looked it up Blocky yes. Confused by what the deal is here now

empty flint
#

use a mixin-esque pattern with two interfaces
@quiet depot That was my second idea that I haven't yet implemented and thought before I go and refactor shit I'd better ask if Kotlin has a better solution

lunar cypress
#

Elara: perfect in every way
What is this lmao

quiet depot
#

bmโ€™s language

#

@empty flint idk, does kotlin have language level traits/mixins?

#

afaik it doesnโ€™t

#

so doubt itโ€™d be any better here

old wyvern
#

so mixin is like a function that isnt part of the actual object?

quiet depot
#

well the word โ€œmixinโ€ describes it perfectly

old wyvern
#

mix-in

quiet depot
#

mixing functionality

lunar cypress
#

No not elara this meme

old wyvern
#

I mean would extensions be an example of that?

empty flint
#

internal abstract class <T> it is

quiet depot
#

technically yes yugi

old wyvern
#

hmm

empty flint
#

@empty flint idk, does kotlin have language level traits/mixins?
@quiet depot Comparable is a mixin.

#

So it does. Kinda

#

At least according to Google it is

#

I swear all of your questions are "how do I do this impossible hacky thing"
@prisma wave Hm do you mind that I ask dumbass questions where the answer is always something along the lines of "no and also why in the fuck would you ever need that"?

prisma wave
#

not exactly

#

I do appreciate free XP

quiet depot
#

blocky the problem is if youโ€™re asking these questions, youโ€™re doing something wrong

prisma wave
#

What is this lmao
@lunar cypress good meme

obtuse gale
#

android dev is kotlin right?

prisma wave
#

Yes

obtuse gale
#

alright ive just had a dumb idea that ive gotta do rn otherwise I wont have motivation tommorow morning

prisma wave
#

Using java for android apps will summon a horde of angry developers

old wyvern
#

you know borz, this would have worked out in Elara fingerguns

type YourType => { firstThing (Foo) => Unit } || { secondThing (Foo) => Int }
obtuse gale
#

Using java will summon a horde of angry developers

#

and im guessing android stuidos the way to go?

onyx loom
#

ig so

old wyvern
#

yea Aj

#

I actually just downloaded android studio a day or two ago

hot hull
#

Aj, sheesh I just downloaded AS as well

old wyvern
#

oi

quiet depot
#

surely everything android studio can do is possible in ij ult

empty flint
#

blocky the problem is if youโ€™re asking these questions, youโ€™re doing something wrong
@quiet depot But that's exactly the reason I ask them? If I did everything right, why would I be asking questions?

quiet depot
#

ik the other ides can be emulated in ij, as is a bit diff tho cuz google

old wyvern
#

Can it debug install properly straight onto the device?

quiet depot
#

so not sure

old wyvern
#

Not really sure

prisma wave
#

IJ has an android plugin which makes it literally android studio afaik

old wyvern
#

ah

prisma wave
#

But I prefer to separate IDEs personally

#

SRP irl

onyx loom
#

lol

old wyvern
#

I swear Jetbrains have updates for their IDEs every week or something

prisma wave
#

Pretty much lol

old wyvern
#

Everytime I open toolbox there is always something to update

quiet depot
#

srp irl is too hard

obtuse gale
#

yo why did android stuido make a src/main/java when I told it im deving in kotlin ๐Ÿ˜ 

old wyvern
quiet depot
#

why u got com and ult?

old wyvern
#

I had comm from earlier

onyx loom
#

damn com is taking up like 1gb of storage u should delete it!

old wyvern
#

meh

onyx loom
#

!!!

#

actually how much storage is ij lol

old wyvern
#

lemme check

quiet depot
#

probs about 1gb

obtuse gale
#

im immensely disappointed with AS

onyx loom
#

lol?

old wyvern
obtuse gale
#

like wtf, making main/java when its a kotlin project

onyx loom
#

u just downloaded it kek

hot hull
#

I mean if I can use IJ for android dev, Imma use it

onyx loom
#

ok nvm

hot hull
#

Why use another thing if this works fingerguns

obtuse gale
#

AS has drag and drop shit doesnt it?

old wyvern
#

Yes

obtuse gale
#

surely ij doesnt have that

prisma wave
#

It does with the android plugin I think

old wyvern
#

Btw anyone have any idea for a app to try out

obtuse gale
#

im doing something really stupid atm lol

old wyvern
#

I cant seem to come up with any ideas to work on to try this

onyx loom
#

@old wyvern does ij offer anything similar to that (like a design view in VS) with JFX / tornado?

quiet depot
#

pretty sure it does

old wyvern
#

mhm

quiet depot
#

you realise as is ij right?

old wyvern
#

SceneBuilder or something

#

Also I just realized Android Studio generated the kotlin classes inside the Java root

obtuse gale
#

thats what i was saying before lol

onyx loom
#

you realise as is ij right?
@quiet depot i mean yea but im too dumb to know where this stuff is kek

jovial warren
#

hey anyone here know how to create a set that is the complement of another set in Kotlin? (for enums)

#

what I mean by complement is a set that has none of the values that the other set has in it

old wyvern
#

just filter out the ones that is contained in the other set from the values array?

jovial warren
#

good idea

obtuse gale
#

Anyone know a good place to learn android dev stuff?

old wyvern
obtuse gale
#

damn they professional

hot hull
#

An indian guy from yt best fingerguns

old wyvern
#

๐Ÿ™„

obtuse gale
#

tf are these tutorials

prisma wave
#

birthday card app

onyx loom
#

๐Ÿ™‚

prisma wave
obtuse gale
#

5 minutes in and ive allready crashed AS ๐Ÿ˜Ž

prisma wave
#

ES would not have this problem

onyx loom
#

when will the elara circlejerk end

old wyvern
#

It has only begun

onyx loom
#

๐Ÿ˜

prisma wave
#

it is immortal

obtuse gale
#

is there an easy way to find the latest ver of a dependency?

hot hull
ocean quartz
#

@jovial warren I don't see why it wouldn't

distant sun
#

Go to it's maven repo? @obtuse gale

ocean quartz
#

What does that annotation do?
Anyways try and see it

distant sun
#

Imagine if android wasnt using xml for design ๐Ÿ˜ญ

obtuse gale
#

pretty epic when stuff doesnt work and theres no errors ๐Ÿ‘Œ

jovial warren
#

@ocean quartz @Component? it basically makes the class managed by Spring

#

it's Spring's component annotation

ocean quartz
#

Ah fair

obtuse gale
#

I think im going crazy lol , I cant decide what to do, i started by fucking around with android dev, now imma make a spring website hehe

jovial warren
#

lol

heady birch
#

Spring is a good skill I think

obtuse gale
#

hm yeah, this will actually be a nice way to learn, its basically
Registration/Login,
Admin must verify your account before you can access a page

heady birch
#

If you need anyhelp ust ask me

obtuse gale
heady birch
#

Web -> Spring Mvc & Spring session
Template Engine -> Whatever you want (probably thymeleaf)
Security -> Spring Security
SQL -> Spring Data Jpa & MySQL Driver

jovial warren
#

or SQL -> Exposed for Spring Boot (can be obtained separately)

heady birch
#

Oh yeah actually maybe if your using Kotlin

jovial warren
#

yeah, imo Exposed > JPA for Kotlin

obtuse gale
#

hm?

jovial warren
#

you familiar with JetBrains Exposed?

obtuse gale
#

nope

#

Ive done JPA stuff before, im guessing htats JpaRepository

jovial warren
#

JPA = Java Persistence API

#

if you're more familiar with JPA, use JPA

obtuse gale
#

alright ill stick with it just cos ive used it

jovial warren
#

just use what you're most comfortable with

obtuse gale
#

I heard bm mention a kotlin plugin or something so you dont have to give everything default values, where would I find that?

#

cos in past projects ive just added default params to everything so theres a no-arg constructor, which jpa requires im guessing

jovial warren
#

yeah

#

I know there's a plugin, I just have no idea what it's called

obtuse gale
#

is it this? kotlin("plugin.jpa") version "1.3.72" I just noticed thingo added it to my build.gradle.kts

jovial warren
#

maybe

obtuse gale
#

alright

#

also know any resources for a registration/login page?

jovial warren
#

ยฏ_(ใƒ„)_/ยฏ

#

Google?

heady birch
#

For login page make a plain html form

#

Registration forms look into thymeleaf object binding

#

Create a pojo e.g

class RegistrationForm {
String name, email, password, confirmPassword;
}

prisma wave
#

@obtuse gale if you've set it to use kotlin it should add the jpa plugin automatically

ocean quartz
#

This is awesome, the way commonmark handles the parser is pretty cool, just made the colors escapable PogW
&#000This \&cis &r*Sparta* &cnot escaped

prisma wave
#

Hot

ocean quartz
#

Very hot, this means i can make it so formats can pass through nodes and possible even through lines, so you'd have like gradient that would follow up through all lines

distant sun
#

I need a keyboard linked to IJ and when an exception happen it will turn red ๐Ÿ˜ฎ

onyx loom
#

or just dont have exceptions, ez

ocean quartz
#

Oh boy, <#hex> format also works, now the fun part, the complex <g:hex:hex> and <r:1.0:1.0> dios

ocean quartz
#

@prisma wave @old wyvern Question for you guys about Elara's parser, how do you guys detect double/float?
I have a scanner, which is basically a Stack, it has all the characters, i need to peek into the stack and check the combination of them is a double or not if you know what i mean

prisma wave
#

iirc that should be done in the lexer

#

which basically just checks if a . is present at all

#

probably a naive solution, but it works

#
numType := Int
for {
        ch := s.read()
        if ch == eof {
            break
        }
        if ch == '\n' {
            s.unread()
            break
        }
        if ch == '.' {
            numType = Float
        } else if !unicode.IsNumber(ch) {
            break
        }
        buf.WriteRune(ch)
    }
distant sun
#

the f is :=

prisma wave
#

variable declaration

#

but with inference

#

var [name] [type] is for traditional declaration

#

name := value is for type inference

ocean quartz
#

Let me give this a shot, and yeah it's basically a lexer but commonmark calls it a parser for some reason

prisma wave
#

odd

distant sun
#

ugly

hot hull
#

Berry

prisma wave
#

never disrespect go like that

ocean quartz
hot hull
#

I mean not bad?

ocean quartz
#

Daba dee daba die

#

Oh, found a problem lmao, if no closing character is found it'll loop forever kek

#

May not be the best implementation but it's cool, all sorts of combinations work, like 1, 1., 1.0, 1.25, .2, etc

hot hull
#

What a comek Matt

ocean quartz
#

Comek?

hot hull
#

"And i am blue"
Daba dee daba die

ocean quartz
#

The fuck is "comek" though?

hot hull
#

Comedian

#

Comek

ocean quartz
#

Oh lol

hot hull
#

Smh

jovial warren
#

lol

#

I didn't know that either

#

must be Slovenian slang

#

ยฏ_(ใƒ„)_/ยฏ

hot hull
#

No lol, it's from those stonks memes

jovial warren
#

haha

onyx loom
#

frostys vocabulary after looking at stonks memes:

distant sun
#

:stinks:

jovial warren
#

lol

earnest narwhal
heady birch
#

Lol

#

Is that Go?

#
numType := Int
for {
        ch := s.read()
        if ch == eof {
            break
        }
        if ch == '\n' {
            s.unread()
            break
        }
        if ch == '.' {
            numType = Float
        } else if !unicode.IsNumber(ch) {
            break
        }
        buf.WriteRune(ch)
    }
distant sun
#

I think is elara

heady birch
#

for ? {

distant sun
#

Or the parser for elara written in go

prisma wave
#

It's go

#

But yeah

heady birch
#

Is that for a loop?

prisma wave
#

Not exactly

distant sun
#

while true

prisma wave
#

I think they function more like while true yeah

distant sun
#

Bm

#

you know how gradle has smth like this for setters of an object?

options {
  x = 1
  y = 1
}```
Is there an equivalent for kt?
prisma wave
#

options.apply

distant sun
#

instead of
options.x = 1
options.y = 2

prisma wave
#
options.apply {
  x = 1
  y = 2
}```
distant sun
#

hot

prisma wave
#

very

heady birch
#

So much nicer in rust

prisma wave
#

๐Ÿ™„

distant sun
#

๐Ÿคข

#

I read that cola clean rust, you can try it

heady birch
#

What

#

Oh

prisma wave
#

go for loops can be like java ones btw

distant sun
#

Whats eof btw @prisma wave

prisma wave
#

for i := 0; i < 10; i++

#

end of file

#

when there's no more data to read

distant sun
#

ah

heady birch
#

for i in 0..1

#

loop {}

#

rust compiler tricks

prisma wave
#

ridiculous

heady birch
#

you out here using some object for optionals

distant sun
#

do you actually use rust?

heady birch
#

rust Option compiles to null pointer check ๐Ÿ˜„

prisma wave
#

rust users are immature

heady birch
#

0 added overhead

prisma wave
#

go users are distinguished and bold

distant sun
#

Niall is 12 so idm

heady birch
#

go users

#

are like

prisma wave
#

typical rust user

#

12

heady birch
#

C wanna bes

distant sun
#

Go users!!!

prisma wave
#

go users good

heady birch
#

but cant write stuff without a GC

prisma wave
#

it fast

#

pff

#

GC useful

distant sun
#

C is yuk

prisma wave
#

^

heady birch
#

thats what an imposter woudl say

distant sun
#

spltnk is my fav

prisma wave
#

Go is like java but not ugly and fast

distant sun
#

yes, := is very .. nice

heady birch
#

What

#

What

#

Go is not clean

distant sun
#

Looks like a fail trying to make a smile face

#

:=)

prisma wave
#

walrus operator

#

:=

distant sun
#

Ugly operator

prisma wave
#

if err != nil

#

generics

distant sun
#

?

#

???

prisma wave
#

go

#

does not have generics

distant sun
#

Ok I understand not wanting to be too verbose

prisma wave
#

and you have to handle every error

distant sun
#

But some stuff are just stupid

#

nil, elif, strtkn

heady birch
#

Niallang

let a is 5 as double-precision
prisma wave
#

nil is quite common

distant sun
#

please define a
please set a to 12

heady birch
#

ok

distant sun
#

nil means what, null?

prisma wave
#

and go uses else if instead of elif

#

yeah