Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Ruby is verbose, compared to Symta

Name: Anonymous 2014-12-21 18:14

Symta:
type person{Name Age} name/Name age/Age
person.`<` X = $age < X.age
person.as_text = "{$name} ({$age})"

Group = [person{'Bob' 33}, person{'Chris' 16}, person{'Ash' 16}]

say Group.sort.flip


Ruby:
class Person
attr_reader :name, :age
def initialize(name, age)
@name, @age = name, age
end
def <=>(person) # the comparison operator for sorting
age <=> person.age
end
def to_s
"#{name} (#{age})"
end
end

group = [
Person.new("Bob", 33),
Person.new("Chris", 16),
Person.new("Ash", 23)
]

puts group.sort.reverse

Name: Anonymous 2014-12-27 1:49

Symta is verbose, compared to Perl.

Perl 5: Modern Perl 5 way
use strict;
use warnings;
use 5.18.0;
{
package Person;
use Moose;
use overload '""' => sub { $_[0]->name . ' (' . $_[0]->age . ')' };
has name => is => 'rw', default => sub { 'Anonymous' };
has age => is => 'rw', default => sub { 1337 };
}
my @group = (
Person->new({ name => 'Bob', age => 33 }),
Person->new({ name => 'Chris', age => 16 }),
Person->new({ name => 'Ash', age => 23 }),
);
say for sort { $a->age <=> $b->age } @group;

Perl 5: Blessed way
use strict;
use warnings;
use 5.18.0;
{
package Person;
use strict; use warnings;

use overload '""' => sub { "$_[0]->{name} ($_[0]->{age})" };

sub new {
my ($class, $args) = @_;
bless {
name => ($args->{name} // 'Anonymous'),
age => ($args->{age} // 0)
}, $class;
}
}
my @group = (
Person->new({ name => 'Bob', age => 33 }),
Person->new({ name => 'Chris', age => 16 }),
Person->new({ name => 'Ash', age => 23 }),
);
say for sort { $a->{age} <=> $b->{age} } @group;

Perl 5: codegolf
print "$_->{name} ($_->{age})\n" for
sort { $a->{age} <=> $b->{age} } (
{ name => 'Bob', age => 33 },
{ name => 'Chris', age => 16 },
{ name => 'Ash', age => 23 },
);

Perl 5: oneliner
print "$_->[0] ($_->[1])\n" for sort { $a->[1] <=> $b->[1] } (['Bob',33],['Chris',16],['Ash',23],);

Perl 5: read-only
%s=qw/Bob 33 Chris 16 Ash 23/;print"$_ ($s{$_})\n"for sort{$s{$a}<=>$s{$b}}keys%s

Thats why I don't program SHITTY languages like Ruby and Symta.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List