From b710e84f7ce48e4ffd4b84b73783462e1974294e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bogumi=C5=82=20Kami=C5=84ski?= Date: Sat, 4 Mar 2023 17:25:42 +0100 Subject: [PATCH] move errata to a separate file --- README.md | 153 +----------------------------------------------------- 1 file changed, 1 insertion(+), 152 deletions(-) diff --git a/README.md b/README.md index 01393c1..e35d294 100644 --- a/README.md +++ b/README.md @@ -175,155 +175,4 @@ Kamiński, Bogumił. 2023. *Julia for Data Analysis*. Manning. ## Errata - -### Chapter 1, section 1.2.1, page 7 - -I show the following example of code execution: - -``` -julia> function sum_n(n) - s = 0 - for i in 1:n - s += i - end - return s - end -sum_n (generic function with 1 method) - -julia> @time sum_n(1_000_000_000) - 0.000001 seconds -500000000500000000 -``` - -This timing is very fast (and the reason is explained in the book). -The issue is that this is the situation under Julia 1.7. - -Under Julia 1.8 and Julia 1.9 running the same code takes longer (tested under Julia 1.9-beta4): - -``` -julia> @time sum_n(1_000_000_000) - 2.265569 seconds -500000000500000000 -``` - -The reason for this inconsistency is a bug in the `@time` macro introduced in Julia 1.8 release. -The `sum_n(1_000_000_000)` call (without `@time`) is executed fast. -Here is a simplified benchmark (run under Julia 1.9-beta4): - -``` -julia> let - start = time_ns() - v = sum_n(1_000_000_000) - stop=time_ns() - v, Int(stop - start) - end -(500000000500000000, 1000) -``` - -Unfortunately there is an issue with the `@time` -macro used in global scope, that needs to be resolved in Base Julia. -See [this issue](https://github.com/JuliaLang/julia/issues/47561). - -### Chapter 2, introduction, page 20 - -* middle of page 20: the provided link http://mng.bz/5mWD explaining *k-times winsorized mean* definition no longer works. - Use https://web.archive.org/web/20210804184830/https://v8doc.sas.com/sashtml/insight/chap38/sect17.htm provided by - [The Wayback Machine](https://web.archive.org/) instead. - -### Chapter 2, section 2.3.1, page 30 - -I compare the following expressions: - -``` -x > 0 && println(x) -``` - -and - -``` -if x > 0 - println(x) -end -``` - -where `x = -7`. - -I write there that Julia interprets them both in the same way. -It is true in terms of the fact that in both cases the `println` function is not called (and this is the focus point of the example). -However, there is a difference in the value of these expressions. -The first expression evaluates to `false`, while the second evaluates to `nothing`. - -Here is how you can check it: - -``` -julia> x = -7 --7 - -julia> show(x > 0 && println(x)) -false -julia> show(if x > 0 - println(x) - end) -nothing -``` - -### Chapter 2, section 2.5, page 45 - -* top of page 45: *use in this book):* should be *use in this book:* - -### Chapter 3, section 3.2.3, page 58 - -* middle of page 58: `y[end - the + 1] = y[end -- k]` should be `y[end - i + 1] = y[end - k]` - -### Chapter 3, section 3.2.3, page 59 - -* top of page 59: `sort(v::AbstractVector; kwthe.)` should be `sort(v::AbstractVector; kws...)` - -### Chapter 6, section 6.4.1, page 132 - -* middle of Listing 6.4: `codeunits("?")` should be `codeunits("ε")` - -### Chapter 8, section 8.1.2, page 189 - -* middle of page 189: `zsdf format` should be `zstd format` - -### Chapter 8, section 8.2.1, page 191 - -* bottom of page 191: `misssingstring` should be `missingstring` - -### Chapter 10, section 10.2.2, page 255 - -* bottom of page 255: `? Error: Error adding value to column :b.` should be `┌ Error: Error adding value to column :b.` - -### Chapter 12, section 12.1.4, page 302 - -* bottom of page 302: - -``` -julia> df = DataFrame(a=1:3, b=1:3, c=1:3) -3×3 DataFrame - Row │ a b c - │ Int64 Int64 Int64 -??????????????????????????? - 1 │ 1 1 1 - 2 │ 2 2 2 - 3 │ 3 3 3 -``` - -should be - -``` -julia> df = DataFrame(a=1:3, b=1:3, c=1:3) -3×3 DataFrame - Row │ a b c - │ Int64 Int64 Int64 -─────┼───────────────────── - 1 │ 1 1 1 - 2 │ 2 2 2 - 3 │ 3 3 3 -``` - -### Chapter 12, section 12.3.2, page 318 - -* top of page 318: in the annotation to Figure 12.6 there is text *Applies a log1p* which looks like *Applies a loglp* - (this is a display issue due to the fact that in the font used letter `l` and digit `1` look identical) +You can find errata for the book in [this file](errata.md).