Skip to content

Commit 579efd5

Browse files
authored
Merge pull request #572 from typelevel/markdown-tweaks
Clean up some markdown issues
2 parents 6883036 + 97ad480 commit 579efd5

11 files changed

+22
-18
lines changed

collections/_posts/2013-07-07-generic-numeric-programming.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -352,16 +352,16 @@ trait Fractional[A] extends Integral[A] with Field[A] with NRoot[A]
352352

353353
Spire also adds many new useful number types. Here's an incomplete list:
354354

355-
- **spire.math.Rational** is a fast, exact number type for working with
355+
- `spire.math.Rational` is a fast, exact number type for working with
356356
rational numbers,
357-
- **spire.math.Complex[A]** is a parametric number type for complex numbers,
358-
- **spire.math.Number** is a boxed number type that strives for flexibility
357+
- `spire.math.Complex[A]` is a parametric number type for complex numbers,
358+
- `spire.math.Number` is a boxed number type that strives for flexibility
359359
of use,
360-
- **spire.math.Interval** is a number type for interval arithmetic,
361-
- **spire.math.Real** is a number type for exact geometric computation that
360+
- `spire.math.Interval` is a number type for interval arithmetic,
361+
- `spire.math.Real` is a number type for exact geometric computation that
362362
provides exact n-roots, as well as exact division,
363-
- **spire.math.{UByte,UShort,UInt,ULong}** unsigned integer types, and
364-
- **spire.math.Natural** an arbitrary precision unsigned integer type.
363+
- `spire.math.{UByte,UShort,UInt,ULong}` unsigned integer types, and
364+
- `spire.math.Natural` an arbitrary precision unsigned integer type.
365365

366366
### Better Readability
367367

collections/_posts/2013-09-11-using-scalaz-Unapply.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ types are equal, and is much more powerful than scala-library's own
212212
`=:=`. We're using the core Leibniz operator, `subst`, directly to
213213
prove that, *as a consequence of that type equality*, `List[FA] ===
214214
List[U.M[U.A]]` is *also* a type equality, and that therefore this
215-
[constant-time] coercion is valid. This lifting is applicable in all
215+
(constant-time) coercion is valid. This lifting is applicable in all
216216
contexts, not just covariant ones like `List`'s. Take a look at
217217
[the full API](https://github.com/scalaz/scalaz/blob/v7.0.3/core/src/main/scala/scalaz/Leibniz.scala)
218218
for more, though you'll typically just need to come up with the right

collections/_posts/2013-10-18-treelog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,3 +192,6 @@ Further Reading
192192

193193
- [Monad Transformers in Scala](http://debasishg.blogspot.co.uk/2011/07/monad-transformers-in-scala.html)
194194
- [Monad Transformers in the Wild](http://www.slideshare.net/StackMob/monad-transformers-in-the-wild)
195+
196+
[README]: https://github.com/lancewalton/treelog/blob/main/README.md
197+

collections/_posts/2015-07-13-type-members-parameters.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
layout: post
3-
title: Type members are [almost] type parameters
3+
title: Type members are almost type parameters
44
category: technical
55

66
meta:

collections/_posts/2015-07-23-type-projection.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ even Java manages the task. But it just seems *odder* that merely
151151
calling a method can create a whole refinement `{...}` raincloud, from
152152
scratch, filling in the blanks with sensible types along the way.
153153

154-
It’s completely sound, though. An `StSource` [that exists as a value]
154+
It’s completely sound, though. An `StSource` (that exists as a value)
155155
*must* have an `S`, even if we existentialized it away. So, as with
156156
`_`s, let’s just give it a name to pass as the inferred type
157157
parameter. It makes a whole lot more sense than supposing

collections/_posts/2015-07-30-values-never-change-types.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ didn’t work, but if we took that `xs` and passed it to a
122122
type-parameterized version, everything worked fine. Why is that?
123123

124124
If you have a *mutable* variable of an existential type, the
125-
existentialized part of the type may have different [type] values at
125+
existentialized part of the type may have different (type) values at
126126
different parts of the program. Let’s use
127127
[the `StSource` from the projection post]({% post_url 2015-07-23-type-projection %}#a-good-reason-to-use-type-members).
128128
Note that the `S` member is existential, because we did not bind it.

collections/_posts/2015-08-06-machinist.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Introduction
2222

2323
> Is it correct, that this stuff is completely obsolete now due to
2424
> value classes or are there still some use cases? An example of using
25-
> value class for zero-cost implicit enrichment: [...]
25+
> value class for zero-cost implicit enrichment: (...)
2626
2727
The short answer is that value classes existed before the Machinist macros were implemented, and they do not solve the same problem Machinist solves.
2828

collections/_posts/2016-08-21-hkts-moving-forward.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ meta:
1212
As its opening sentence reminds the reader—a point often missed by
1313
many reviewers—the book
1414
[*Functional Programming in Scala*](https://www.manning.com/books/functional-programming-in-scala)
15-
is not a book about Scala. This [wise] choice occasionally manifests
15+
is not a book about Scala. This (wise) choice occasionally manifests
1616
in peculiar ways.
1717

1818
For example, you can go quite far into the book implementing its
1919
exercises in languages with simpler type systems. Chapters 1–8 and 10
2020
port quite readily to
21-
[Java [8]](https://github.com/sbordet/fpinscala-jdk8) and C#. So
21+
[Java 8](https://github.com/sbordet/fpinscala-jdk8) and C#. So
2222
*Functional Programming in Scala* can be a very fine resource for
2323
learning some typed functional programming, even if such languages are
2424
all you have to work with. Within these chapters, you can remain

collections/_posts/2017-03-01-four-ways-to-escape-a-cake.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ There’s a hint in that we had to write `val u`, not `u`, nor `private
214214
val u`, in order for the `implicit class` itself to compile. This
215215
signature tells us that there’s an *argument* of type
216216
`LittleUniverse`, and a *member* `u: LittleUniverse`. However, whereas
217-
with the function examples above, we [and the compiler] could trust
217+
with the function examples above, we (and the compiler) could trust
218218
that they’re one and the same, we have no such guarantee here. So we
219219
don’t know that an `lu.Needle` is a `u.Needle`. We didn’t get far
220220
enough, but we don’t know that a `u.Needle` is an `lu.Needle`, either.
@@ -420,7 +420,7 @@ Let’s walk through it one more time.
420420
1. `n: U#Needle`.
421421
2. `h.iter` expects a `u.type#Needle` for all `val u: U`.
422422
3. **Suppose that we constrain `U` to be a singleton type**:
423-
1. [The existential] `u.type = U`, by singleton equivalence.
423+
1. (The existential) `u.type = U`, by singleton equivalence.
424424
2. By `#` left side equivalence, `h.iter` expects a `U#Needle`.
425425

426426
The existential variable complicates things, but the rule is sound.
@@ -540,7 +540,7 @@ First, covariant:
540540
Secondly, contravariant. We’re going to have to make a best guess
541541
here, because it’s not entirely clear to me what’s going on.
542542

543-
1. Since [existential] path `u` has a singleton type `U` (if we define
543+
1. Since (existential) path `u` has a singleton type `U` (if we define
544544
“has a singleton type” as “having a type *X* such that
545545
*X*` <: Singleton`”), so `u.type = U` by the singleton equivalence.
546546
2. Since equivalence implies conformance, according to the first

collections/_posts/2017-12-20-who-implements-typeclass.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ because
392392
names with variable type patterns.
393393
1. You can’t use variable type patterns with the structural
394394
ADT-style” patterns; you must instead use inelegant and
395-
inconvenient [non-variable] type patterns. (This may be
395+
inconvenient (non-variable) type patterns. (This may be
396396
[improved in Typelevel Scala 4](https://github.com/typelevel/scala/blob/typelevel-readme/notes/typelevel-4.md#type-arguments-on-patterns-pull5774-paulp).)
397397

398398
Yet this remains entirely up to shortcomings in the current pattern

0 commit comments

Comments
 (0)