Skip to content

Commit c8d4670

Browse files
Merge branch 'master' into scalafiddle-integration
2 parents a80a0bc + b51087b commit c8d4670

File tree

197 files changed

+2568
-912
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

197 files changed

+2568
-912
lines changed

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
source 'https://rubygems.org'
22
gem 'jekyll-redirect-from'
33
gem 'jekyll-scalafiddle'
4-
4+
gem 'html-proofer'
55
# gem 'html-proofer' # link-checking: bundle exec htmlproofer ./_site/ --only-4xx --empty-alt-ignore --allow-hash-href
66

77
# group :jekyll_plugins do

Gemfile.lock

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,31 @@
11
GEM
22
remote: https://rubygems.org/
33
specs:
4+
activesupport (5.1.4)
5+
concurrent-ruby (~> 1.0, >= 1.0.2)
6+
i18n (~> 0.7)
7+
minitest (~> 5.1)
8+
tzinfo (~> 1.1)
49
addressable (2.5.1)
510
public_suffix (~> 2.0, >= 2.0.2)
611
colorator (1.1.0)
12+
colorize (0.8.1)
13+
concurrent-ruby (1.0.5)
14+
ethon (0.11.0)
15+
ffi (>= 1.3.0)
716
ffi (1.9.18)
817
forwardable-extended (2.6.0)
18+
html-proofer (3.7.5)
19+
activesupport (>= 4.2, < 6.0)
20+
addressable (~> 2.3)
21+
colorize (~> 0.8)
22+
mercenary (~> 0.3.2)
23+
nokogiri (~> 1.7)
24+
parallel (~> 1.3)
25+
typhoeus (~> 0.7)
26+
yell (~> 2.0)
27+
i18n (0.9.1)
28+
concurrent-ruby (~> 1.0)
929
jekyll (3.5.1)
1030
addressable (~> 2.4)
1131
colorator (~> 1.0)
@@ -31,6 +51,11 @@ GEM
3151
rb-fsevent (~> 0.9, >= 0.9.4)
3252
rb-inotify (~> 0.9, >= 0.9.7)
3353
mercenary (0.3.6)
54+
mini_portile2 (2.3.0)
55+
minitest (5.10.3)
56+
nokogiri (1.8.1)
57+
mini_portile2 (~> 2.3.0)
58+
parallel (1.12.0)
3459
pathutil (0.14.0)
3560
forwardable-extended (~> 2.6)
3661
public_suffix (2.0.5)
@@ -44,13 +69,21 @@ GEM
4469
sass-listen (4.0.0)
4570
rb-fsevent (~> 0.9, >= 0.9.4)
4671
rb-inotify (~> 0.9, >= 0.9.7)
72+
thread_safe (0.3.6)
73+
typhoeus (0.8.0)
74+
ethon (>= 0.8.0)
75+
tzinfo (1.2.4)
76+
thread_safe (~> 0.1)
77+
yell (2.0.7)
4778

4879
PLATFORMS
4980
ruby
5081

5182
DEPENDENCIES
83+
html-proofer
5284
jekyll-redirect-from
5385
jekyll-scalafiddle
5486

5587
BUNDLED WITH
5688
1.16.1
89+

_ba/tour/automatic-closures.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
layout: tour
3+
title: Automatic Type-Dependent Closure Construction
4+
5+
discourse: false
6+
7+
partof: scala-tour
8+
9+
language: ba
10+
---

_ba/tour/case-classes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ partof: scala-tour
99

1010
num: 11
1111
next-page: pattern-matching
12-
previous-page: currying
12+
previous-page: multiple-parameter-lists
1313
prerequisite-knowledge: classes, basics, mutability
1414

1515
---

_ba/tour/lower-type-bounds.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ Kroz sljedeći primjer vidjećemo zašto je ovo korisno:
2222

2323
```tut:fail
2424
trait Node[+B] {
25-
def prepend(elem: B): Unit
25+
def prepend(elem: B): Node[B]
2626
}
2727
2828
case class ListNode[+B](h: B, t: Node[B]) extends Node[B] {
29-
def prepend(elem: B) = ListNode[B](elem, this)
29+
def prepend(elem: B): ListNode[B] = ListNode(elem, this)
3030
def head: B = h
31-
def tail = t
31+
def tail: Node[B] = t
3232
}
3333
3434
case class Nil[+B]() extends Node[B] {
35-
def prepend(elem: B) = ListNode[B](elem, this)
35+
def prepend(elem: B): ListNode[B] = ListNode(elem, this)
3636
}
3737
```
3838

@@ -48,17 +48,17 @@ Ovo radimo uvođenjem novog tipskog parametra `U` koji ima `B` kao svoju donju g
4848

4949
```tut
5050
trait Node[+B] {
51-
def prepend[U >: B](elem: U)
51+
def prepend[U >: B](elem: U): Node[U]
5252
}
5353
5454
case class ListNode[+B](h: B, t: Node[B]) extends Node[B] {
55-
def prepend[U >: B](elem: U) = ListNode[U](elem, this)
55+
def prepend[U >: B](elem: U): ListNode[U] = ListNode(elem, this)
5656
def head: B = h
57-
def tail = t
57+
def tail: Node[B] = t
5858
}
5959
6060
case class Nil[+B]() extends Node[B] {
61-
def prepend[U >: B](elem: U) = ListNode[U](elem, this)
61+
def prepend[U >: B](elem: U): ListNode[U] = ListNode(elem, this)
6262
}
6363
```
6464

File renamed without changes.

_ba/tour/nested-functions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ discourse: true
88
partof: scala-tour
99

1010
num: 9
11-
next-page: currying
11+
next-page: multiple-parameter-lists
1212
previous-page: higher-order-functions
1313

1414
---

_ba/tour/operators.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ partof: scala-tour
99

1010
num: 30
1111
next-page: by-name-parameters
12-
previous-page: local-type-inference
12+
previous-page: type-inference
1313
prerequisite-knowledge: case-classes
1414

1515
---

_ba/tour/packages-and-imports.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
layout: tour
3+
title: Packages and Imports
4+
language: ba
5+
6+
discourse: true
7+
8+
partof: scala-tour
9+
10+
num: 35
11+
previous-page: named-arguments
12+
next-page: type-inference
13+
---
14+
15+
# Packages and Imports
16+
17+
(this section of the tour has not been translated yet. pull request
18+
with translation welcome!)

_ba/tour/polymorphic-methods.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ partof: scala-tour
99

1010
num: 28
1111

12-
next-page: local-type-inference
12+
next-page: type-inference
1313
previous-page: implicit-conversions
1414
prerequisite-knowledge: unified-types
1515

_ba/tour/tour-of-scala.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,39 +20,39 @@ Scala elegantno objedinjuje mogućnosti objektno orijentisanih i funkcionalnih j
2020
## Scala je objektno orijentisana ##
2121
Scala je čisto objektno orijentisan jezik u smislu da je [svaka vrijednost objekt](unified-types.html).
2222
Tipovi i ponašanja objekata se opisuju kroz [klase](classes.html) i [trejtove](traits.html).
23-
Klase se proširuju nasljeđivanjem i fleksibilnim mehanizmom [kompozicije mixina](mixin-class-composition.html)
23+
Klase se proširuju nasljeđivanjem i fleksibilnim mehanizmom [kompozicije mixina](mixin-class-composition.html)
2424
kao čistom zamjenom za višestruko nasljeđivanje.
2525

2626
## Scala je funkcionalna ##
2727
Scala je također funkcionalni jezik u smislu da je [svaka funkcija vrijednost](unified-types.html).
28-
Scala ima [lahku sintaksu](anonymous-function-syntax.html) za definisanje anonimnih funkcija,
28+
Scala ima lahku sintaksu za definisanje anonimnih funkcija,
2929
i podržava [funkcije višeg reda](higher-order-functions.html), omogućuje [ugnježdavanje funkcija](nested-functions.html),
30-
i podržava [curry-jevanje](currying.html).
30+
i podržava [curry-jevanje](multiple-parameter-lists.html).
3131
Scaline [case klase](case-classes.html) i njen mehanizam [podudaranja uzoraka](pattern-matching.html) modeluju algebarske tipove
3232
koji se koriste u dosta funkcionalnih programskih jezika.
3333
[Singlton objekti](singleton-objects.html) omogućuju pogodan način za grupisanje funkcija koje nisu članovi klase.
3434

35-
Nadalje, Scalin mehanizam podudaranja uzoraka (pattern-matching) prirodno podržava [procesiranje XML podataka](xml-processing.html)
36-
pomoću [desno-ignorišućih uzoraka sekvenci](regular-expression-patterns.html),
35+
Nadalje, Scalin mehanizam podudaranja uzoraka (pattern-matching) prirodno podržava procesiranje XML podataka
36+
pomoću [desno-ignorišućih uzoraka sekvenci](regular-expression-patterns.html),
3737
i generalnim proširivanjem s [ekstraktor objektima](extractor-objects.html).
38-
U ovom kontekstu, [komprehensije sekvenci](sequence-comprehensions.html) su korisne za izražavanje upita (query).
38+
U ovom kontekstu, komprehensije sekvenci su korisne za izražavanje upita (query).
3939
Ove mogućnosti čine Scalu idealnom za razvijanje aplikacija kao što su web servisi.
4040

4141
## Scala je statički tipizirana (statically typed) ##
42-
Scala je opremljena ekspresivnim sistemom tipova koji primorava da se apstrakcije koriste na bezbjedan i smislen način.
42+
Scala je opremljena ekspresivnim sistemom tipova koji primorava da se apstrakcije koriste na bezbjedan i smislen način.
4343
Konkretno, sistem tipova podržava sljedeće:
4444

4545
* [generičke klase](generic-classes.html)
4646
* [anotacije varijanse](variances.html)
4747
* [gornje](upper-type-bounds.html) i [donje](lower-type-bounds.html) granice tipa,
4848
* [unutarnje klase](inner-classes.html) i [apstraktne tipove](abstract-types.html) kao članove objekta
4949
* [složene tipove](compound-types.html)
50-
* [eksplicitno tipizirane samo-reference](explicitly-typed-self-references.html)
50+
* [eksplicitno tipizirane samo-reference](self-types.html)
5151
* implicitne [parametre](implicit-parameters.html) i [konverzije](implicit-conversions.html)
5252
* [polimorfne metode](polymorphic-methods.html)
5353

54-
Mehanizam za [lokalno zaključivanje tipova](local-type-inference.html) se brine da korisnik ne mora pisati tipove varijabli
55-
više nego što je potrebno.
54+
Mehanizam za [lokalno zaključivanje tipova](type-inference.html) se brine da korisnik ne mora pisati tipove varijabli
55+
više nego što je potrebno.
5656
U kombinaciji, ove mogućnosti su jaka podloga za bezbjedno ponovno iskorištenje programskih apstrakcija
5757
i za tipski bezbjedno proširenje softvera.
5858

@@ -65,10 +65,10 @@ jezičkih konstrukcija u formi biblioteka.
6565
Zajedničkom upotrebom obje mogućnosti olakšava definisanje novih izraza bez proširenja sintakse samog Scala jezika i bez
6666
korištenja olakšica u vidu macro-a ili meta-programiranja.
6767

68-
Scala je dizajnirana za interoperabilnost s popularnim Java Runtime Environment (JRE).
69-
Konkretno, interakcija s popularnim objektno orijentisanim Java programskim jezikom je prirodna.
68+
Scala je dizajnirana za interoperabilnost s popularnim Java Runtime Environment (JRE).
69+
Konkretno, interakcija s popularnim objektno orijentisanim Java programskim jezikom je prirodna.
7070
Novije mogućnosti Jave kao [anotacije](annotations.html) i Javini generički tipovi imaju direktnu analogiju u Scali.
71-
Scaline mogućnosti bez analogija u Javi, kao što su [podrazumijevani](default-parameter-values.html) i [imenovani parametri](named-parameters.html),
71+
Scaline mogućnosti bez analogija u Javi, kao što su [podrazumijevani](default-parameter-values.html) i [imenovani parametri](named-arguments.html),
7272
se kompajliraju što približnije Javi.
7373
Scala ima isti kompilacijski model (posebno kompajliranje, dinamičko učitavanje klasa)
7474
kao Java i time omogućuje pristupanje hiljadama postojećih visoko kvalitetnih biblioteka.
File renamed without changes.

_books/2-scala-for-the-impatient.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ image: /resources/img/books/scala_for_the_impatient.png
55
status: Available Now
66
authors: ["Cay S. Horstmann"]
77
publisher: Addison-Wesley
8-
publisherLink: https://heuk.pearson.com/about-us.html/Addison-Wesley/
98
---
109

1110
What you get:

_data/overviews.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@
6363
description: "When two versions of Scala are binary compatible, it is safe to compile your project on one Scala version and link against another Scala version at run time. Safe run-time linkage (only!) means that the JVM does not throw a (subclass of) LinkageError when executing your program in the mixed scenario, assuming that none arise when compiling and running on the same version of Scala. Concretely, this means you may have external dependencies on your run-time classpath that use a different version of Scala than the one you’re compiling with, as long as they’re binary compatible. In other words, separate compilation on different binary compatible versions does not introduce problems compared to compiling and running everything on the same version of Scala."
6464
icon: puzzle-piece
6565
url: "core/binary-compatibility-of-scala-releases.html"
66+
- title: Binary Compatibility for library authors
67+
description: "A diverse and comprehensive set of libraries is important to any productive software ecosystem. While it is easy to develop and distribute Scala libraries, good library authorship goes beyond just writing code and publishing it. In this guide, we cover the important topic of Binary Compatibility."
68+
icon: puzzle-piece
69+
url: "core/binary-compatibility-for-library-authors.html"
6670

6771
- category: "Reference/Documentation"
6872
description: "Reference material on core Scala tools like Scaladoc and the Scala REPL."

_es/overviews/parallel-collections/concrete-parallel-collections.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Una secuencia [ParArray](http://www.scala-lang.org/api/{{ site.scala-version }}/
2424
scala> pa map (x => (x - 1) / 2)
2525
res1: scala.collection.parallel.mutable.ParArray[Int] = ParArray(0, 1, 2, 3, 4, 5, 6, 7,...
2626

27-
Internamente, para partir el array para que sea procesado de forma paralela se utilizan [splitters]({{ site.baseurl }}/es/overviews/parallel-collections/architecture.html#core_abstractions) (o "partidores"). El Splitter parte y crea dos nuevos splitters con sus índices actualizados. A continuación son utilizados los [combiners]({{ site.baseurl }}/es/overviews/parallel-collections/architecture.html#core_abstractions) (o "combinadores"), que necesitan un poco más de trabajo. Ya que en la mayoría de los métodos transformadores (ej: `flatMap`, `filter`, `takeWhile`, etc.) previamente no es sabido la cantidad de elementos (y por ende, el tamaño del array), cada combiner es esencialmente una variante de un array buffer con un tiempo constante de la operación `+=`. Diferentes procesadores añaden elementos a combiners de arrays separados, que después son combinados al encadenar sus arrays internos. El array subyacente se crea en memoria y se rellenan sus elementos después que el número total de elementos es conocido. Por esta razón, los métodos transformadores son un poco más caros que los métodos de acceso. También, nótese que la asignación de memoria final procede secuencialmente en la JVM, lo que representa un cuello de botella si la operación de mapeo (el método transformador aplicado) es en sí económico (en términos de procesamiento).
27+
Internamente, para partir el array para que sea procesado de forma paralela se utilizan [splitters]({{ site.baseurl }}/es/overviews/parallel-collections/architecture.html) (o "partidores"). El Splitter parte y crea dos nuevos splitters con sus índices actualizados. A continuación son utilizados los [combiners]({{ site.baseurl }}/es/overviews/parallel-collections/architecture.html) (o "combinadores"), que necesitan un poco más de trabajo. Ya que en la mayoría de los métodos transformadores (ej: `flatMap`, `filter`, `takeWhile`, etc.) previamente no es sabido la cantidad de elementos (y por ende, el tamaño del array), cada combiner es esencialmente una variante de un array buffer con un tiempo constante de la operación `+=`. Diferentes procesadores añaden elementos a combiners de arrays separados, que después son combinados al encadenar sus arrays internos. El array subyacente se crea en memoria y se rellenan sus elementos después que el número total de elementos es conocido. Por esta razón, los métodos transformadores son un poco más caros que los métodos de acceso. También, nótese que la asignación de memoria final procede secuencialmente en la JVM, lo que representa un cuello de botella si la operación de mapeo (el método transformador aplicado) es en sí económico (en términos de procesamiento).
2828

2929
Al invocar el método `seq`, los arrays paralelos son convertidos al tipo de colección `ArraySeq`, que vendría a ser la contraparte secuencial del `ParArray`. Esta conversión es eficiente, y el `ArraySeq` utiliza a bajo nivel el mismo array que había sido obtenido por el array paralelo.
3030

@@ -53,7 +53,7 @@ Un [ParRange](http://www.scala-lang.org/api/{{ site.scala-version }}/scala/colle
5353
scala> 15 to 5 by -2 par
5454
res1: scala.collection.parallel.immutable.ParRange = ParRange(15, 13, 11, 9, 7, 5)
5555

56-
Tal como los rangos secuenciales no tienen constructores, los rangos paralelos no tienen [combiner]({{ site.baseurl }}/overviews/parallel-collections/architecture.html#core_abstractions)s. Mapear elementos de un rango paralelo produce un vector paralelo. Los rangos secuenciales y paralelos pueden ser convertidos de uno a otro utilizando los métodos `seq` y `par`.
56+
Tal como los rangos secuenciales no tienen constructores, los rangos paralelos no tienen [combiner]({{ site.baseurl }}/overviews/parallel-collections/architecture.html)s. Mapear elementos de un rango paralelo produce un vector paralelo. Los rangos secuenciales y paralelos pueden ser convertidos de uno a otro utilizando los métodos `seq` y `par`.
5757

5858
scala> (1 to 5 par) map ((x) => x * 2)
5959
res2: scala.collection.parallel.immutable.ParSeq[Int] = ParVector(2, 4, 6, 8, 10)
@@ -85,7 +85,7 @@ y
8585
scala> phs map { x => x * x } sum
8686
res0: Int = 332833500
8787

88-
De forma similar a las tablas hash paralelas, los [combiners]({{ site.baseurl }}/overviews/parallel-collections/architecture.html#core_abstractions) de los hash tries paralelos pre-ordenan los elementos en posiciones y construyen el hash trie resultante en paralelo al asignarle distintos grupos de posiciones a diferentes procesadores, los cuales contruyen los sub-tries independientemente.
88+
De forma similar a las tablas hash paralelas, los [combiners]({{ site.baseurl }}/overviews/parallel-collections/architecture.html) de los hash tries paralelos pre-ordenan los elementos en posiciones y construyen el hash trie resultante en paralelo al asignarle distintos grupos de posiciones a diferentes procesadores, los cuales contruyen los sub-tries independientemente.
8989

9090
Los hash tries paralelos pueden ser convertidos hacia y desde hash tries secuenciales por medio de los métodos `seq` y `par`.
9191

@@ -114,7 +114,7 @@ Un [concurrent.TrieMap](http://www.scala-lang.org/api/{{ site.scala-version }}/s
114114
...
115115

116116

117-
Para ofrecer más detalles de lo que sucede bajo la superficie, los [Combiners]({{ site.baseurl }}/overviews/parallel-collections/architecture.html#core_abstractions) son implementados como `TrieMap`s --ya que esta es una estructura de datos concurrente, solo un combiner es construido para todo la invocación al método transformador y compartido por todos los procesadores.
117+
Para ofrecer más detalles de lo que sucede bajo la superficie, los [Combiners]({{ site.baseurl }}/overviews/parallel-collections/architecture.html) son implementados como `TrieMap`s --ya que esta es una estructura de datos concurrente, solo un combiner es construido para todo la invocación al método transformador y compartido por todos los procesadores.
118118

119119
Al igual que todas las colecciones paralelas mutables, `TrieMap`s y la versión paralela, `ParTrieMap`s obtenidas mediante los métodos `seq` o `par` subyacentemente comparten la misma estructura de almacenamiento, por lo tanto modificaciones en una es visible en la otra.
120120

_es/overviews/parallel-collections/overview.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ executed in parallel.
5353

5454
De forma de ilustrar la generalidad y utilidad de las colecciones paralelizadas, proveemos un conjunto de ejemplos de uso útiles, todos ellos siendo ejecutados en paralelo de forma totalmente transparente al usuario.
5555

56-
_Nota:_ Algunos de los siguientes ejemplos operan en colecciones pequeñas, lo cual no es recomendado. Son provistos como ejemplo para ilustrar solamente el propósito. Como una regla heurística general, los incrementos en velocidad de ejecución comienzan a ser notados cuando el tamaño de la colección es lo suficientemente grande, tipicamente algunos cuantos miles de elementos. (Para más información en la relación entre tamaño de una coleccion paralelizada y su performance, por favor véase [appropriate subsection]({{ site.baseurl}}/es/overviews/parallel-collections/performance.html#how_big_should_a_collection_be_to_go_parallel) en la sección [performance]({{ site.baseurl }}/es/overviews/parallel-collections/performance.html) (en inglés).
56+
_Nota:_ Algunos de los siguientes ejemplos operan en colecciones pequeñas, lo cual no es recomendado. Son provistos como ejemplo para ilustrar solamente el propósito. Como una regla heurística general, los incrementos en velocidad de ejecución comienzan a ser notados cuando el tamaño de la colección es lo suficientemente grande, tipicamente algunos cuantos miles de elementos. (Para más información en la relación entre tamaño de una coleccion paralelizada y su performance, por favor véase [appropriate subsection]({{ site.baseurl}}/es/overviews/parallel-collections/performance.html) en la sección [performance]({{ site.baseurl }}/es/overviews/parallel-collections/performance.html) (en inglés).
5757

5858
#### map
5959

@@ -195,5 +195,4 @@ _Nota:_ Generalmente se piensa que, al igual que las operaciones no asociativas,
195195

196196
Lo que implica el "fuera de orden" en las colecciones paralelizadas es solamente que la operación será ejecutada fuera de orden (en un sentido _temporal_, es decir no secuencial, no significa que el resultado va a ser re-"*combinado*" fuera de orden (en un sentido de _espacio_). Al contrario, en general los resultados siempre serán reensamblados en roden, es decir una colección paralelizada que se divide en las siguientes particiones A, B, C, en ese orden, será reensamblada nuevamente en el orden A, B, C. No en otro orden arbitrario como B, C, A.
197197

198-
Para más información de cómo se dividen y se combinan los diferentes tipos de colecciones paralelizadas véase el artículo sobre [Arquitectura]({{ site.baseurl }}/es/overviews
199-
/parallel-collections/architecture.html) de esta misma serie.
198+
Para más información de cómo se dividen y se combinan los diferentes tipos de colecciones paralelizadas véase el artículo sobre [Arquitectura]({{ site.baseurl }}/es/overviews/parallel-collections/architecture.html) de esta misma serie.

0 commit comments

Comments
 (0)