1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-08-07 07:16:42 +02:00

Merge pull request #3953 from sumanstats/master

[language/raku-code] Perl6 to Raku and many more
This commit is contained in:
Max Schumacher
2020-07-07 15:28:05 +02:00
committed by GitHub
14 changed files with 379 additions and 381 deletions

2
.gitattributes vendored
View File

@@ -61,5 +61,5 @@ paren*.html.markdown linguist-language=lisp
pcre*.html.markdown linguist-language=Perl pcre*.html.markdown linguist-language=Perl
perl.html.markdown linguist-language=Perl perl.html.markdown linguist-language=Perl
perl-*.html.markdown linguist-language=Perl perl-*.html.markdown linguist-language=Perl
perl6*.html.markdown linguist-language=Perl6 raku*.html.markdown linguist-language=Perl6
ruby*.html.markdown linguist-language=Ruby ruby*.html.markdown linguist-language=Ruby

View File

@@ -11,10 +11,10 @@ translators:
lang: bg-bg lang: bg-bg
--- ---
Perl 5 е изключително мощен език за програмиране с широка област на приложение Perl е изключително мощен език за програмиране с широка област на приложение
и над 25 годишна история. и над 25 годишна история.
Perl 5 работи на повече от 100 операционни системи от мини до супер-компютри и е Perl работи на повече от 100 операционни системи от мини до супер-компютри и е
подходящ както за бърза разработка на скриптове така и за огромни приложения. подходящ както за бърза разработка на скриптове така и за огромни приложения.
```perl ```perl
@@ -323,4 +323,3 @@ sub increment {
- [Learn at www.perl.com](http://www.perl.org/learn.html) - [Learn at www.perl.com](http://www.perl.org/learn.html)
- [perldoc](http://perldoc.perl.org/) - [perldoc](http://perldoc.perl.org/)
- и идващото с perl: `perldoc perlintro` - и идващото с perl: `perldoc perlintro`

View File

@@ -8,9 +8,9 @@ translators:
lang: de-de lang: de-de
--- ---
Perl 5 ist eine sehr mächtige, funktionsreiche Programmiersprache mit über 25 Jahren Entwicklungsgeschichte. Perl ist eine sehr mächtige, funktionsreiche Programmiersprache mit über 25 Jahren Entwicklungsgeschichte.
Perl 5 läuft auf über 100 Platformen von portablen Geräten bis hin zu Mainframes. Perl 5 ist geeignet für Rapid-Prototyping und auch groß angelegte Entwicklungs-Projekte. Perl läuft auf über 100 Platformen von portablen Geräten bis hin zu Mainframes. Perl ist geeignet für Rapid-Prototyping und auch groß angelegte Entwicklungs-Projekte.
```perl ```perl
# Einzeilige Kommentare beginnen mit dem # Symbol. # Einzeilige Kommentare beginnen mit dem # Symbol.

View File

@@ -11,9 +11,9 @@ translators:
lang: es-es lang: es-es
--- ---
Perl 5 es un lenguaje de programación altamente capaz, rico en características, con más de 25 años de desarrollo. Perl es un lenguaje de programación altamente capaz, rico en características, con más de 25 años de desarrollo.
Perl 5 corre en más de 100 plataformas, desde portátiles hasta ordenadores centrales, y es adecuado para realizar desde prototipos rápidos hasta desarrollar proyectos a gran escala. Perl corre en más de 100 plataformas, desde portátiles hasta ordenadores centrales, y es adecuado para realizar desde prototipos rápidos hasta desarrollar proyectos a gran escala.
```perl ```perl
# Comentarios de una sola línea con un carácter hash # Comentarios de una sola línea con un carácter hash

View File

@@ -1,8 +1,8 @@
--- ---
name: perl6 name: perl6
category: language category: language
language: perl6 language: Raku
filename: perl6-es.p6 filename: learnraku-es.raku
contributors: contributors:
- ["vendethiel", "http://github.com/vendethiel"] - ["vendethiel", "http://github.com/vendethiel"]
- ["Samantha McVey", "https://cry.nu"] - ["Samantha McVey", "https://cry.nu"]
@@ -11,10 +11,10 @@ translators:
lang: es-es lang: es-es
--- ---
Perl 6 es un lenguaje de programación altamente capaz y con características Raku es un lenguaje de programación altamente capaz y con características
abundantes para hacerlo el lenguage ideal por los próximos 100 años. abundantes para hacerlo el lenguage ideal por los próximos 100 años.
El compilador primario de Perl 6 se llama [Rakudo](http://rakudo.org), el cual El compilador primario de Raku se llama [Rakudo](http://rakudo.org), el cual
se ejecuta en JVM y en [MoarVM](http://moarvm.com). se ejecuta en JVM y en [MoarVM](http://moarvm.com).
Meta-nota: dos signos de números (##) son usados para indicar párrafos, Meta-nota: dos signos de números (##) son usados para indicar párrafos,
@@ -34,9 +34,9 @@ mientras que un solo signo de número (#) indica notas.
## Variables ## Variables
```perl6 ```perl6
## En Perl 6, se declara una variable lexical usando `my` ## En Raku, se declara una variable lexical usando `my`
my $variable; my $variable;
## Perl 6 tiene 3 tipos básicos de variables: escalares, arrays, y hashes. ## Raku tiene 3 tipos básicos de variables: escalares, arrays, y hashes.
``` ```
### Escalares ### Escalares
@@ -55,7 +55,7 @@ my $str2 = "Cadena";
## (y terminar con) guiones bajos (_): ## (y terminar con) guiones bajos (_):
my $nombre'de-variable_ = 5; # Esto funciona! my $nombre'de-variable_ = 5; # Esto funciona!
my $booleano = True; # `True` y `False` son valores booleanos en Perl 6. my $booleano = True; # `True` y `False` son valores booleanos en Raku.
my $inverso = !$booleano; # Puedes invertir un booleano con el operador prefijo `!` my $inverso = !$booleano; # Puedes invertir un booleano con el operador prefijo `!`
my $bool-forzado = so $str; # Y puedes usar el operador prefijo `so` que my $bool-forzado = so $str; # Y puedes usar el operador prefijo `so` que
# convierte su operador en un Bool # convierte su operador en un Bool
@@ -70,7 +70,7 @@ my $bool-forzado = so $str; # Y puedes usar el operador prefijo `so` que
my @array = 'a', 'b', 'c'; my @array = 'a', 'b', 'c';
# equivalente a: # equivalente a:
my @letras = <a b c>; # array de palabras, delimitado por espacios. my @letras = <a b c>; # array de palabras, delimitado por espacios.
# Similar al qw de perl5, o el %w de Ruby. # Similar al qw de perl, o el %w de Ruby.
my @array = 1, 2, 3; my @array = 1, 2, 3;
say @array[2]; # Los índices de un array empiezan por el 0 -- Este es say @array[2]; # Los índices de un array empiezan por el 0 -- Este es
@@ -105,7 +105,7 @@ my %hash = foo => "bar", # las llaves reciben sus comillas
; ;
## Aunque los hashes son almacenados internamente de forma diferente a los ## Aunque los hashes son almacenados internamente de forma diferente a los
## arrays, Perl 6 te permite crear un hash usando un array ## arrays, Raku te permite crear un hash usando un array
## con un número par de elementos fácilmente. ## con un número par de elementos fácilmente.
my %hash = <llave1 valor1 llave2 valor2>; my %hash = <llave1 valor1 llave2 valor2>;
@@ -122,7 +122,7 @@ my %hash = :w(1), # equivalente a `w => 1`
say %hash{'llave1'}; # Puedes usar {} para obtener el valor de una llave say %hash{'llave1'}; # Puedes usar {} para obtener el valor de una llave
say %hash<llave2>; # Si es una cadena de texto, puedes actualmente usar <> say %hash<llave2>; # Si es una cadena de texto, puedes actualmente usar <>
# (`{llave1}` no funciona, debido a que Perl 6 no tiene # (`{llave1}` no funciona, debido a que Raku no tiene
# palabras desnudas (barewords en inglés)) # palabras desnudas (barewords en inglés))
``` ```
@@ -190,7 +190,7 @@ sub con-nombre($arg-normal, :$nombrado) {
} }
con-nombre(1, nombrado => 6); #=> 7 con-nombre(1, nombrado => 6); #=> 7
## Sin embargo, debes tener algo en cuenta aquí: ## Sin embargo, debes tener algo en cuenta aquí:
## Si pones comillas alrededor de tu llave, Perl 6 no será capaz de verla ## Si pones comillas alrededor de tu llave, Raku no será capaz de verla
## al tiempo de compilación, y entonces tendrás un solo objeto Pair como ## al tiempo de compilación, y entonces tendrás un solo objeto Pair como
## un argumento posicional, lo que significa que el siguiente ejemplo ## un argumento posicional, lo que significa que el siguiente ejemplo
## falla: ## falla:
@@ -256,7 +256,7 @@ concat3(|@array); #=> a, b, c
## Contenedores ## Contenedores
```perl6 ```perl6
## En Perl 6, valores son actualmente almacenados en "contenedores". ## En Raku, valores son actualmente almacenados en "contenedores".
## El operador de asignación le pregunta al contenedor en su izquierda ## El operador de asignación le pregunta al contenedor en su izquierda
## almacenar el valor a su derecha. Cuando se pasan alrededor, contenedores ## almacenar el valor a su derecha. Cuando se pasan alrededor, contenedores
## son marcados como inmutables. Esto significa que, en una función, tu ## son marcados como inmutables. Esto significa que, en una función, tu
@@ -286,7 +286,7 @@ mutar 42; # Parámetro '$n' esperaba un contenedor mutable,
my $x = 42; my $x = 42;
sub x-almacena() is rw { $x } sub x-almacena() is rw { $x }
x-almacena() = 52; # En este caso, los paréntesis son mandatorios x-almacena() = 52; # En este caso, los paréntesis son mandatorios
# (porque de otra forma, Perl 6 piensa que la función # (porque de otra forma, Raku piensa que la función
# `x-almacena` es un identificador). # `x-almacena` es un identificador).
say $x; #=> 52 say $x; #=> 52
``` ```
@@ -339,7 +339,7 @@ say $edad > 18 ?? "Eres un adulto" !! "Eres menor de 18";
## `given` simplemente pone su argumento en `$_` (como un bloque lo haría), ## `given` simplemente pone su argumento en `$_` (como un bloque lo haría),
## y `when` lo compara usando el operador de "coincidencia inteligente" (`~~`). ## y `when` lo compara usando el operador de "coincidencia inteligente" (`~~`).
## ##
## Dado que otras construcciones de Perl 6 usan esta variable (por ejemplo, ## Dado que otras construcciones de Raku usan esta variable (por ejemplo,
## el bucle `for`, bloques, etc), esto se significa que el poderoso `when` no ## el bucle `for`, bloques, etc), esto se significa que el poderoso `when` no
## solo se aplica con un `given`, sino que se puede usar en cualquier ## solo se aplica con un `given`, sino que se puede usar en cualquier
## lugar donde exista una variable `$_`. ## lugar donde exista una variable `$_`.
@@ -413,7 +413,7 @@ for @array {
} }
## La sintaxis de "bloque puntiagudo" no es específica al bucle for. ## La sintaxis de "bloque puntiagudo" no es específica al bucle for.
## Es solo una manera de expresar un bloque en Perl 6. ## Es solo una manera de expresar un bloque en Raku.
if computación-larga() -> $resultado { if computación-larga() -> $resultado {
say "El resultado es $resultado"; say "El resultado es $resultado";
} }
@@ -423,7 +423,7 @@ if computación-larga() -> $resultado {
```perl6 ```perl6
## Dados que los lenguajes de la familia Perl son lenguages basados ## Dados que los lenguajes de la familia Perl son lenguages basados
## mayormente en operadores, los operadores de Perl 6 son actualmente ## mayormente en operadores, los operadores de Raku son actualmente
## subrutinas un poco cómicas en las categorías sintácticas. Por ejemplo, ## subrutinas un poco cómicas en las categorías sintácticas. Por ejemplo,
## infix:<+> (adición) o prefix:<!> (bool not). ## infix:<+> (adición) o prefix:<!> (bool not).
@@ -502,13 +502,13 @@ False ~~ True; # True
## Esto también funciona como un atajo para `0..^N`: ## Esto también funciona como un atajo para `0..^N`:
^10; # significa 0..^10 ^10; # significa 0..^10
## Esto también nos permite demostrar que Perl 6 tiene arrays ## Esto también nos permite demostrar que Raku tiene arrays
## ociosos/infinitos, usando la Whatever Star: ## ociosos/infinitos, usando la Whatever Star:
my @array = 1..*; # 1 al Infinito! `1..Inf` es lo mismo. my @array = 1..*; # 1 al Infinito! `1..Inf` es lo mismo.
say @array[^10]; # puedes pasar arrays como subíndices y devolverá say @array[^10]; # puedes pasar arrays como subíndices y devolverá
# un array de resultados. Esto imprimirá # un array de resultados. Esto imprimirá
# "1 2 3 4 5 6 7 8 9 10" (y no se quedaré sin memoria!) # "1 2 3 4 5 6 7 8 9 10" (y no se quedaré sin memoria!)
## Nota: Al leer una lista infinita, Perl 6 "cosificará" los elementos que ## Nota: Al leer una lista infinita, Raku "cosificará" los elementos que
## necesita y los mantendrá en la memoria. Ellos no serán calculados más de ## necesita y los mantendrá en la memoria. Ellos no serán calculados más de
## una vez. Tampoco calculará más elementos de los que necesita. ## una vez. Tampoco calculará más elementos de los que necesita.
@@ -555,7 +555,7 @@ $b %%= 5; # divisible por y asignación. Equivalente $b = $b %% 5;
## ¡Más sobre subrutinas! ## ¡Más sobre subrutinas!
```perl6 ```perl6
## Como dijimos anteriormente, Perl 6 tiene subrutinas realmente poderosas. ## Como dijimos anteriormente, Raku tiene subrutinas realmente poderosas.
## Veremos unos conceptos claves que la hacen mejores que en cualquier otro ## Veremos unos conceptos claves que la hacen mejores que en cualquier otro
## lenguaje :-). ## lenguaje :-).
``` ```
@@ -685,7 +685,7 @@ map(sub ($a, $b) { $a + $b + 3 }, @array); # (aquí con `sub`)
### Acerca de tipos... ### Acerca de tipos...
```perl6 ```perl6
## Perl 6 es gradualmente tipado. Esto quiere decir que tu especifica el ## Raku es gradualmente tipado. Esto quiere decir que tu especifica el
## tipo de tus variables/argumentos/devoluciones (return), o puedes omitirlos ## tipo de tus variables/argumentos/devoluciones (return), o puedes omitirlos
## y serán "Any" por defecto. ## y serán "Any" por defecto.
## Obviamente tienes acceso a algunas tipos básicos, como Int y Str. ## Obviamente tienes acceso a algunas tipos básicos, como Int y Str.
@@ -703,7 +703,7 @@ subset EnteroGrande of Int where * > 500;
### Despacho Múltiple (Multiple Dispatch) ### Despacho Múltiple (Multiple Dispatch)
```perl6 ```perl6
## Perl 6 puede decidir que variante de una subrutina invocar basado en el ## Raku puede decidir que variante de una subrutina invocar basado en el
## tipo de los argumento, o precondiciones arbitrarias, como con un tipo o ## tipo de los argumento, o precondiciones arbitrarias, como con un tipo o
## un `where`: ## un `where`:
@@ -754,7 +754,7 @@ multi sin_ti-o-contigo {
## Ámbito (Scoping) ## Ámbito (Scoping)
```perl6 ```perl6
## En Perl 6, a diferencia de otros lenguajes de scripting, (tales como ## En Raku, a diferencia de otros lenguajes de scripting, (tales como
## (Python, Ruby, PHP), debes declarar tus variables antes de usarlas. El ## (Python, Ruby, PHP), debes declarar tus variables antes de usarlas. El
## declarador `my`, del cual aprendiste anteriormente, usa "ámbito léxical". ## declarador `my`, del cual aprendiste anteriormente, usa "ámbito léxical".
## Hay otros declaradores (`our`, `state`, ..., ) los cuales veremos luego. ## Hay otros declaradores (`our`, `state`, ..., ) los cuales veremos luego.
@@ -779,12 +779,12 @@ outer()(); #=> 'Foo Bar'
## Twigils ## Twigils
```perl6 ```perl6
## Hay muchos `twigils` especiales (sigilos compuestos) en Perl 6. ## Hay muchos `twigils` especiales (sigilos compuestos) en Raku.
## Los twigils definen el ámbito de las variables. ## Los twigils definen el ámbito de las variables.
## Los twigils * y ? funcionan con variables regulares: ## Los twigils * y ? funcionan con variables regulares:
## * Variable dinámica ## * Variable dinámica
## ? Variable al tiempo de compilación ## ? Variable al tiempo de compilación
## Los twigils ! y . son usados con los objetos de Perl 6: ## Los twigils ! y . son usados con los objetos de Raku:
## ! Atributo (miembro de la clase) ## ! Atributo (miembro de la clase)
## . Método (no una variable realmente) ## . Método (no una variable realmente)
@@ -830,10 +830,10 @@ di_ambito(); #=> 1 100 Cambiamos el valor de $*ambito_din_2 en invoca_a_di_ambit
## La manera más fácil de recordar el twigil `$.` is comparándolo ## La manera más fácil de recordar el twigil `$.` is comparándolo
## con como los métodos son llamados. ## con como los métodos son llamados.
## El modelo de objeto de Perl 6 ("SixModel") es muy flexible, y te permite ## El modelo de objeto de Raku ("SixModel") es muy flexible, y te permite
## agregar métodos dinámicamente, cambiar la semántica, etc ... ## agregar métodos dinámicamente, cambiar la semántica, etc ...
## (no hablaremos de todo esto aquí. Por lo tanto, refiérete a: ## (no hablaremos de todo esto aquí. Por lo tanto, refiérete a:
## https://docs.perl6.org/language/objects.html). ## https://docs.raku.org/language/objects.html).
class Clase-Atrib { class Clase-Atrib {
has $.atrib; # `$.atrib` es inmutable. has $.atrib; # `$.atrib` es inmutable.
@@ -870,7 +870,7 @@ $class-obj.otro-atrib = 10; # En cambio, esto funciona porque el atributo
### Herencia de Objeto ### Herencia de Objeto
```perl6 ```perl6
## Perl 6 también tiene herencia (junto a herencia múltiple) ## Raku también tiene herencia (junto a herencia múltiple)
## Mientras los métodos declarados con `method` son heredados, aquellos ## Mientras los métodos declarados con `method` son heredados, aquellos
## declarados con `submethod` no lo son. ## declarados con `submethod` no lo son.
## Submétodos son útiles para la construcción y destrucción de tareas, ## Submétodos son útiles para la construcción y destrucción de tareas,
@@ -955,7 +955,7 @@ class Item does PrintableVal {
```perl6 ```perl6
## Excepciones están construidas al tope de las clases, en el paquete ## Excepciones están construidas al tope de las clases, en el paquete
## `X` (como `X::IO`). ## `X` (como `X::IO`).
## En Perl 6, excepciones son lanzadas automáticamente. ## En Raku, excepciones son lanzadas automáticamente.
open 'foo'; #=> Failed to open file foo: no such file or directory open 'foo'; #=> Failed to open file foo: no such file or directory
## También imprimirá la línea donde el error fue lanzado y otra información ## También imprimirá la línea donde el error fue lanzado y otra información
## concerniente al error. ## concerniente al error.
@@ -966,7 +966,7 @@ die 'Error!'; #=> Error!
## O más explícitamente: ## O más explícitamente:
die X::AdHoc.new(payload => 'Error!'); die X::AdHoc.new(payload => 'Error!');
## En Perl 6, `orelse` es similar al operador `or`, excepto que solamente ## En Raku, `orelse` es similar al operador `or`, excepto que solamente
## coincide con variables indefinidas, en cambio de cualquier cosa ## coincide con variables indefinidas, en cambio de cualquier cosa
## que evalúa a falso. ## que evalúa a falso.
## Valores indefinidos incluyen: `Nil`, `Mu` y `Failure`, también como ## Valores indefinidos incluyen: `Nil`, `Mu` y `Failure`, también como
@@ -1003,7 +1003,7 @@ try open 'foo';
say "Bueno, lo intenté! $!" if defined $!; #=> Bueno, lo intenté! Failed to open file say "Bueno, lo intenté! $!" if defined $!; #=> Bueno, lo intenté! Failed to open file
#foo: no such file or directory #foo: no such file or directory
## Ahora, ¿qué debemos hacer si queremos más control sobre la excepción? ## Ahora, ¿qué debemos hacer si queremos más control sobre la excepción?
## A diferencia de otros lenguajes, en Perl 6 se pone el bloque `CATCH` ## A diferencia de otros lenguajes, en Raku se pone el bloque `CATCH`
## *dentro* del bloque a intentar (`try`). Similarmente como $_ fue asignada ## *dentro* del bloque a intentar (`try`). Similarmente como $_ fue asignada
## cuando 'disarmamos' la excepción con `orelse`, también usamos $_ en el ## cuando 'disarmamos' la excepción con `orelse`, también usamos $_ en el
## bloque CATCH. ## bloque CATCH.
@@ -1032,8 +1032,8 @@ try {
} }
} }
## En Perl 6, excepciones poseen ciertas sutilezas. Algunas ## En Raku, excepciones poseen ciertas sutilezas. Algunas
## subrutinas en Perl 6 devuelven un `Failure`, el cual es un tipo de ## subrutinas en Raku devuelven un `Failure`, el cual es un tipo de
## "excepción no levantada". Ellas no son levantadas hasta que tu intentas ## "excepción no levantada". Ellas no son levantadas hasta que tu intentas
## mirar a sus contenidos, a menos que invoques `.Bool`/`.defined` sobre ## mirar a sus contenidos, a menos que invoques `.Bool`/`.defined` sobre
## ellas - entonces, son manejadas. ## ellas - entonces, son manejadas.
@@ -1071,7 +1071,7 @@ try {
use JSON::Tiny; # si intalaste Rakudo* o Panda, tendrás este módulo use JSON::Tiny; # si intalaste Rakudo* o Panda, tendrás este módulo
say from-json('[1]').perl; #=> [1] say from-json('[1]').perl; #=> [1]
## A diferencia de Perl 5, no deberías declarar paquetes usando ## A diferencia de Perl, no deberías declarar paquetes usando
## la palabra clave `package`. En vez, usa `class Nombre::Paquete::Aquí;` ## la palabra clave `package`. En vez, usa `class Nombre::Paquete::Aquí;`
## para declarar una clase, o si solamente quieres exportar ## para declarar una clase, o si solamente quieres exportar
## variables/subrutinas, puedes usar `module`. ## variables/subrutinas, puedes usar `module`.
@@ -1098,7 +1098,7 @@ my $acciones = JSON::Tiny::Actions.new;
## Declaradores ## Declaradores
```perl6 ```perl6
## En Perl 6, tu obtienes diferentes comportamientos basado en como declaras ## En Raku, tu obtienes diferentes comportamientos basado en como declaras
## una variable. ## una variable.
## Ya has visto `my` y `has`, ahora exploraremos el resto. ## Ya has visto `my` y `has`, ahora exploraremos el resto.
@@ -1168,7 +1168,7 @@ for ^5 -> $a {
## Phasers ## Phasers
```perl6 ```perl6
## Un phaser en Perl 6 es un bloque que ocurre a determinados puntos de tiempo ## Un phaser en Raku es un bloque que ocurre a determinados puntos de tiempo
## en tu programa. Se les llama phaser porque marca un cambio en la fase de ## en tu programa. Se les llama phaser porque marca un cambio en la fase de
## de tu programa. Por ejemplo, cuando el programa es compilado, un bucle ## de tu programa. Por ejemplo, cuando el programa es compilado, un bucle
## for se ejecuta, dejas un bloque, o una excepción se levanta. ## for se ejecuta, dejas un bloque, o una excepción se levanta.
@@ -1302,7 +1302,7 @@ constant tres-veces = eager gather for ^3 { say take $_ }; #=> 0 1 2
## Iterables ## Iterables
```perl6 ```perl6
## En Perl 6, los iterables son objetos que pueden ser iterados similar ## En Raku, los iterables son objetos que pueden ser iterados similar
## a la construcción `for`. ## a la construcción `for`.
## `flat`, aplana iterables: ## `flat`, aplana iterables:
say (1, 10, (20, 10) ); #=> (1 10 (20 10)) Nota como la agrupación se mantiene say (1, 10, (20, 10) ); #=> (1 10 (20 10)) Nota como la agrupación se mantiene
@@ -1333,7 +1333,7 @@ quietly { warn 'Esto es una advertencia!' }; #=> No salida
## ¡Todo el mundo ama los operadores! Tengamos más de ellos. ## ¡Todo el mundo ama los operadores! Tengamos más de ellos.
## La lista de precedencia puede ser encontrada aquí: ## La lista de precedencia puede ser encontrada aquí:
## https://docs.perl6.org/language/operators#Operator_Precedence ## https://docs.raku.org/language/operators#Operator_Precedence
## Pero primero, necesitamos un poco de explicación acerca ## Pero primero, necesitamos un poco de explicación acerca
## de la asociatividad: ## de la asociatividad:
@@ -1356,7 +1356,7 @@ $a ! $b ! $c; # con asociatividad de lista `!`, esto es `infix:<>`
## Okay, has leído todo esto y me imagino que debería mostrarte ## Okay, has leído todo esto y me imagino que debería mostrarte
## algo interesante. ## algo interesante.
## Te mostraré un pequeño secreto (o algo no tan secreto): ## Te mostraré un pequeño secreto (o algo no tan secreto):
## En Perl 6, todos los operadores son actualmente solo subrutinas. ## En Raku, todos los operadores son actualmente solo subrutinas.
## Puedes declarar un operador como declaras una subrutina: ## Puedes declarar un operador como declaras una subrutina:
sub prefix:<ganar>($ganador) { # se refiere a las categorías de los operadores sub prefix:<ganar>($ganador) { # se refiere a las categorías de los operadores
@@ -1406,7 +1406,7 @@ sub postcircumfix:<{ }>(Str $s, Int $idx) {
say "abc"{1}; #=> b say "abc"{1}; #=> b
# depués del término `"abc"`, y alrededor del índice (1) # depués del término `"abc"`, y alrededor del índice (1)
## Esto es de gran valor -- porque todo en Perl 6 usa esto. ## Esto es de gran valor -- porque todo en Raku usa esto.
## Por ejemplo, para eliminar una llave de un hash, tu usas el adverbio ## Por ejemplo, para eliminar una llave de un hash, tu usas el adverbio
## `:delete` (un simple argumento con nombre debajo): ## `:delete` (un simple argumento con nombre debajo):
%h{$llave}:delete; %h{$llave}:delete;
@@ -1488,12 +1488,12 @@ say [[&add]] 1, 2, 3; #=> 6
## * El operador secuencia ## * El operador secuencia
## El operador secuencia es uno de la más poderosas características de ## El operador secuencia es uno de la más poderosas características de
## Perl 6: Está compuesto, en la izquierda, de la lista que quieres que ## Raku: Está compuesto, en la izquierda, de la lista que quieres que
## Perl 6 use para deducir (y podría incluir una clausura), y en la derecha, ## Raku use para deducir (y podría incluir una clausura), y en la derecha,
## un valor o el predicado que dice cuando parar (o Whatever para una ## un valor o el predicado que dice cuando parar (o Whatever para una
## lista infinita perezosa). ## lista infinita perezosa).
my @list = 1, 2, 3 ... 10; # deducción básica my @list = 1, 2, 3 ... 10; # deducción básica
#my @list = 1, 3, 6 ... 10; # esto muere porque Perl 6 no puede deducir el final #my @list = 1, 3, 6 ... 10; # esto muere porque Raku no puede deducir el final
my @list = 1, 2, 3 ...^ 10; # como con rangos, puedes excluir el último elemento my @list = 1, 2, 3 ...^ 10; # como con rangos, puedes excluir el último elemento
# (la iteración cuando el predicado iguala). # (la iteración cuando el predicado iguala).
my @list = 1, 3, 9 ... * > 30; # puedes usar un predicado my @list = 1, 3, 9 ... * > 30; # puedes usar un predicado
@@ -1520,7 +1520,7 @@ say @fib[^10]; #=> 1 1 2 3 5 8 13 21 34 55
```perl6 ```perl6
## Estoy seguro que has estado esperando por esta parte. Bien, ahora que ## Estoy seguro que has estado esperando por esta parte. Bien, ahora que
## sabes algo acerca de Perl 6, podemos comenzar. Primeramente, tendrás ## sabes algo acerca de Raku, podemos comenzar. Primeramente, tendrás
## que olvidarte acerca de "PCRE regexps" (perl-compatible regexps) ## que olvidarte acerca de "PCRE regexps" (perl-compatible regexps)
## (expresiones regulares compatible de perl). ## (expresiones regulares compatible de perl).
## ##
@@ -1529,7 +1529,7 @@ say @fib[^10]; #=> 1 1 2 3 5 8 13 21 34 55
## algunas veces la semántica cambia (`|`). Asegúrate de leer esto ## algunas veces la semántica cambia (`|`). Asegúrate de leer esto
## cuidadosamente porque podrías trospezarte sino lo haces. ## cuidadosamente porque podrías trospezarte sino lo haces.
## ##
## Perl 6 tiene muchas características relacionadas con RegExps. Después de ## Raku tiene muchas características relacionadas con RegExps. Después de
## todo, Rakudo se parsea a si mismo. Primero vamos a estudiar la sintaxis ## todo, Rakudo se parsea a si mismo. Primero vamos a estudiar la sintaxis
## por si misma, después hablaremos acerca de gramáticas (parecido a PEG), ## por si misma, después hablaremos acerca de gramáticas (parecido a PEG),
## las diferencias entre los declaradores `token`, `regex`, y `rule` y ## las diferencias entre los declaradores `token`, `regex`, y `rule` y
@@ -1537,7 +1537,7 @@ say @fib[^10]; #=> 1 1 2 3 5 8 13 21 34 55
## Nota aparte: Todavía tienes acceso a los regexes PCRE usando el ## Nota aparte: Todavía tienes acceso a los regexes PCRE usando el
## mofificador `:P5` (Sin embargo, no lo discutiremos en este tutorial). ## mofificador `:P5` (Sin embargo, no lo discutiremos en este tutorial).
## ##
## En esencia, Perl 6 implementa PEG ("Parsing Expression Grammars") ## En esencia, Raku implementa PEG ("Parsing Expression Grammars")
## ("Parseado de Expresiones de Gramáticas") nativamente. El orden jerárquico ## ("Parseado de Expresiones de Gramáticas") nativamente. El orden jerárquico
## para los parseos ambiguos es determinado por un examen multi-nivel de ## para los parseos ambiguos es determinado por un examen multi-nivel de
## desempate: ## desempate:
@@ -1574,7 +1574,7 @@ say so 'a' ~~ / a /; #=> True # ¡Más legible con los espacios!
## el regexp puede coincider con solo un carácter de la cadena de texto). ## el regexp puede coincider con solo un carácter de la cadena de texto).
## Explicaremos luego como hacerlo. ## Explicaremos luego como hacerlo.
## En Perl 6, puedes tener un carácter alfanumérico como un literal, ## En Raku, puedes tener un carácter alfanumérico como un literal,
## todo lo demás debe escaparse usando una barra invertida o comillas. ## todo lo demás debe escaparse usando una barra invertida o comillas.
say so 'a|b' ~~ / a '|' b /; # `True`. No sería lo mismo si no se escapara `|` say so 'a|b' ~~ / a '|' b /; # `True`. No sería lo mismo si no se escapara `|`
say so 'a|b' ~~ / a \| b /; # `True`. Otra forma de escaparlo say so 'a|b' ~~ / a \| b /; # `True`. Otra forma de escaparlo
@@ -1583,7 +1583,7 @@ say so 'a|b' ~~ / a \| b /; # `True`. Otra forma de escaparlo
## a menos que uses el adverbio `:s` (`:sigspace`, espacio significante). ## a menos que uses el adverbio `:s` (`:sigspace`, espacio significante).
say so 'a b c' ~~ / a b c /; #=> `False`. Espacio no significa nada aquí. say so 'a b c' ~~ / a b c /; #=> `False`. Espacio no significa nada aquí.
say so 'a b c' ~~ /:s a b c /; #=> `True`. Agregamos el modificador `:s` aquí. say so 'a b c' ~~ /:s a b c /; #=> `True`. Agregamos el modificador `:s` aquí.
## Si usamos solo un espacio entre cadenas de texto en un regexp, Perl 6 ## Si usamos solo un espacio entre cadenas de texto en un regexp, Raku
## nos advertirá: ## nos advertirá:
say so 'a b c' ~~ / a b c /; #=> 'False' # Espacio no significa nada aquí. say so 'a b c' ~~ / a b c /; #=> 'False' # Espacio no significa nada aquí.
## Por favor usa comillas o el modificador :s (:sigspace) para suprimir ## Por favor usa comillas o el modificador :s (:sigspace) para suprimir
@@ -1642,7 +1642,7 @@ so 'abbbbbbc' ~~ / a b**3..* c /; # `True` (rangos infinitos no son un problem
## - `<[]>` - Clases de carácteres ## - `<[]>` - Clases de carácteres
## Las clases de carácteres son equivalentes a las clases `[]` de PCRE, ## Las clases de carácteres son equivalentes a las clases `[]` de PCRE,
## pero usan una sintaxis de Perl 6: ## pero usan una sintaxis de Raku:
say 'fooa' ~~ / f <[ o a ]>+ /; #=> 'fooa' say 'fooa' ~~ / f <[ o a ]>+ /; #=> 'fooa'
## Puedes usar rangos: ## Puedes usar rangos:
@@ -1779,17 +1779,17 @@ so 'ayc' ~~ / a [ b | y ] c /; # `True`. Obviamente suficiente...
## Extra: la subrutina MAIN ## Extra: la subrutina MAIN
```perl6 ```perl6
## La subrutina `MAIN` se invoca cuando tu ejecuta un archivo de Perl 6 ## La subrutina `MAIN` se invoca cuando tu ejecuta un archivo de Raku
## directamente. Es realmente poderosa porque Perl 6 actualmente parsea ## directamente. Es realmente poderosa porque Raku actualmente parsea
## los argumentos y los pasas a la subrutina. También maneja argumentos ## los argumentos y los pasas a la subrutina. También maneja argumentos
## nombrados (`--foo`) y hasta autogenerará un `--help`. ## nombrados (`--foo`) y hasta autogenerará un `--help`.
sub MAIN($nombre) { say "¡Hola, $nombre!" } sub MAIN($nombre) { say "¡Hola, $nombre!" }
## Esto produce: ## Esto produce:
## $ perl6 cli.pl ## $ raku cli.pl
## Uso: ## Uso:
## t.pl <nombre> ## t.pl <nombre>
## Y dado que una subrutina regular en Perl 6, puedes tener múltiples ## Y dado que una subrutina regular en Raku, puedes tener múltiples
## despachos: ## despachos:
## (usando un "Bool" por un argumento nombrado para que podamos hacer ## (usando un "Bool" por un argumento nombrado para que podamos hacer
## `--replace` a cambio de `--replace=1`) ## `--replace` a cambio de `--replace=1`)
@@ -1800,7 +1800,7 @@ multi MAIN('add', $key, $value, Bool :$replace) { ... }
multi MAIN('remove', $key) { ... } multi MAIN('remove', $key) { ... }
multi MAIN('import', File, Str :$as) { ... } # omitiendo parámetros nombrados multi MAIN('import', File, Str :$as) { ... } # omitiendo parámetros nombrados
## Esto produce: ## Esto produce:
## $ perl6 cli.pl ## $ raku cli.pl
## Uso: ## Uso:
## t.pl [--replace] add <key> <value> ## t.pl [--replace] add <key> <value>
## t.pl remove <key> ## t.pl remove <key>
@@ -1814,7 +1814,7 @@ multi MAIN('import', File, Str :$as) { ... } # omitiendo parámetros nombrados
### Lista de cosas ### Lista de cosas
```perl6 ```perl6
## Consideramos que por ahora ya sabes lo básico de Perl 6. ## Consideramos que por ahora ya sabes lo básico de Raku.
## Esta sección es solo para listar algunas operaciones comunes ## Esta sección es solo para listar algunas operaciones comunes
## las cuales no están en la "parte principal" del tutorial. ## las cuales no están en la "parte principal" del tutorial.
@@ -1914,22 +1914,22 @@ for <a b c> {
``` ```
Si quieres ir más allá de lo que se muestra aquí, puedes: Si quieres ir más allá de lo que se muestra aquí, puedes:
- Leer la [documentación de Perl 6](https://docs.perl6.org/). Esto es un recurso - Leer la [documentación de Raku](https://docs.raku.org/). Esto es un recurso
grandioso acerca de Perl 6. Si estás buscando por algo en particular, usa la grandioso acerca de Raku. Si estás buscando por algo en particular, usa la
barra de búsquedas. Esto te dará un menú de todas las páginas concernientes barra de búsquedas. Esto te dará un menú de todas las páginas concernientes
a tu término de búsqueda (¡Es mucho mejor que usar Google para encontrar a tu término de búsqueda (¡Es mucho mejor que usar Google para encontrar
documentos acerca de Perl 6!) documentos acerca de Raku!)
- Leer el [Perl 6 Advent Calendar](http://perl6advent.wordpress.com/). Este es - Leer el [Raku Advent Calendar](https://rakuadventcalendar.wordpress.com/). Este es
un gran recurso de fragmentos de código de Perl 6 y explicaciones. Si la documentación un gran recurso de fragmentos de código de Raku y explicaciones. Si la documentación
no describe algo lo suficientemente bien, puedes encontrar información más detallada no describe algo lo suficientemente bien, puedes encontrar información más detallada
aquí. Esta información puede ser un poquito más antigua pero hay muchos ejemplos y aquí. Esta información puede ser un poquito más antigua pero hay muchos ejemplos y
explicaciones. Las publicaciones fueron suspendidas al final del 2015 cuando explicaciones. Las publicaciones fueron suspendidas al final del 2015 cuando
el lenguaje fue declarado estable y Perl 6.c fue lanzado. el lenguaje fue declarado estable y Raku.c fue lanzado.
- Unirte a `#perl6` en `irc.freenode.net`. Las personas aquí son siempre serviciales. - Unirte a `#raku` en `irc.freenode.net`. Las personas aquí son siempre serviciales.
- Chequear la [fuente de las funciones y clases de Perl 6 - Chequear la [fuente de las funciones y clases de Raku
](https://github.com/rakudo/rakudo/tree/nom/src/core). Rakudo está principalmente ](https://github.com/rakudo/rakudo/tree/master/src/core.c). Rakudo está principalmente
escrito en Perl 6 (con mucho de NQP, "Not Quite Perl" ("No Perl Todavía"), un escrito en Raku (con mucho de NQP, "Not Quite Perl" ("No Perl Todavía"), un
subconjunto de Perl 6 que es más fácil de implementar y optimizar). subconjunto de Raku que es más fácil de implementar y optimizar).
- Leer [documentos acerca del diseño del lenguaje](http://design.perl6.org). - Leer [documentos acerca del diseño del lenguaje](http://design.raku.org).
Estos explican P6 desde la perspectiva de un implementador, lo cual es bastante Estos explican P6 desde la perspectiva de un implementador, lo cual es bastante
interesante. interesante.

View File

@@ -10,9 +10,9 @@ translators:
- ["Matteo Taroli", "http://www.matteotaroli.be"] - ["Matteo Taroli", "http://www.matteotaroli.be"]
lang: fr-fr lang: fr-fr
--- ---
Perl 5 est un langage de programmation riche en fonctionnalité, avec plus de 25 ans de développement. Perl est un langage de programmation riche en fonctionnalité, avec plus de 25 ans de développement.
Perl 5 fonctionne sur plus de 100 plateformes, allant des pc portables aux mainframes et Perl fonctionne sur plus de 100 plateformes, allant des pc portables aux mainframes et
est autant adapté à un prototypage rapide qu'à des projets de grande envergure. est autant adapté à un prototypage rapide qu'à des projets de grande envergure.
```perl ```perl

View File

@@ -8,9 +8,9 @@ contributors:
- ["Dan Book", "http://github.com/Grinnz"] - ["Dan Book", "http://github.com/Grinnz"]
--- ---
Perl 5 is a highly capable, feature-rich programming language with over 25 years of development. Perl is a highly capable, feature-rich programming language with over 25 years of development.
Perl 5 runs on over 100 platforms from portables to mainframes and is suitable for both rapid prototyping and large scale development projects. Perl runs on over 100 platforms from portables to mainframes and is suitable for both rapid prototyping and large scale development projects.
```perl ```perl
# Single line comments start with a number sign. # Single line comments start with a number sign.

View File

@@ -12,10 +12,10 @@ lang: pl-pl
--- ---
Perl 5 jest wysoce użytecznym, bogatym w wiele opcji językiem programowania Perl jest wysoce użytecznym, bogatym w wiele opcji językiem programowania
z ponad 25 latami nieustannego rozwoju. z ponad 25 latami nieustannego rozwoju.
Perl 5 używany jest na ponad 100 różnych platformach (od przenośnych do w Perl używany jest na ponad 100 różnych platformach (od przenośnych do w
pełni stacjonarnych) i nadaje się zarówno do szybkiego prototypowania jak pełni stacjonarnych) i nadaje się zarówno do szybkiego prototypowania jak
i projektów deweloperskich prowadzonych na szeroką skalę. i projektów deweloperskich prowadzonych na szeroką skalę.

View File

@@ -10,9 +10,9 @@ translators:
lang: pt-br lang: pt-br
--- ---
Perl 5 é, uma linguagem de programação altamente capaz, rica em recursos, com mais de 25 anos de desenvolvimento. Perl é, uma linguagem de programação altamente capaz, rica em recursos, com mais de 25 anos de desenvolvimento.
Perl 5 roda em mais de 100 plataformas, de portáteis a mainframes e é adequada tanto para prototipagem rápida, quanto em projetos de desenvolvimento em grande escala. Perl roda em mais de 100 plataformas, de portáteis a mainframes e é adequada tanto para prototipagem rápida, quanto em projetos de desenvolvimento em grande escala.
```perl ```perl
# Comentários de uma linha começam com um sinal de número. # Comentários de uma linha começam com um sinal de número.

View File

Internal Server Error - Irisnetwork
500 Internal Server Error

Gitea Version: 1.24.4

@@ -7,7 +7,7 @@ filename: learnpod.pod6
Pod is an easy-to-use and purely descriptive mark-up language, Pod is an easy-to-use and purely descriptive mark-up language,
with no presentational components. Besides its use for documenting with no presentational components. Besides its use for documenting
Raku Perl 6 programs and modules, Pod can be utilized to write language Raku programs and modules, Pod can be utilized to write language
documentation, blogs, and other types of document composition as well. documentation, blogs, and other types of document composition as well.
Pod documents can be easily converted to HTML and many other formats Pod documents can be easily converted to HTML and many other formats
@@ -49,12 +49,12 @@ generate documentation.
``` ```