Skip to content

Commit 21a923b

Browse files
author
Alan Vardy
committed
fix: correct specs in Statistics
1 parent 7a59a3c commit 21a923b

File tree

1 file changed

+22
-23
lines changed

1 file changed

+22
-23
lines changed

lib/statistics.ex

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ defmodule Statistics do
1010
1111
Calls Enum.sum/1
1212
"""
13-
@spec sum(list) :: number
13+
@spec sum([number]) :: number
1414
def sum(list) when is_list(list), do: do_sum(list, 0)
1515

1616
defp do_sum([], t), do: t
@@ -27,7 +27,7 @@ defmodule Statistics do
2727
2.0
2828
2929
"""
30-
@spec mean(list(number)) :: float() | nil
30+
@spec mean([number]) :: float() | nil
3131
def mean(list) when is_list(list), do: do_mean(list, 0, 0)
3232

3333
defp do_mean([], 0, 0), do: nil
@@ -50,7 +50,7 @@ defmodule Statistics do
5050
2.5
5151
5252
"""
53-
@spec median(list) :: number
53+
@spec median([number]) :: number | nil
5454
def median([]), do: nil
5555

5656
def median(list) when is_list(list) do
@@ -86,7 +86,7 @@ defmodule Statistics do
8686
2
8787
8888
"""
89-
@spec mode(list) :: number
89+
@spec mode([number]) :: number | nil
9090
def mode([]), do: nil
9191

9292
def mode(list) when is_list(list) do
@@ -106,7 +106,7 @@ defmodule Statistics do
106106
%{1 => 2, 2 => 4, 3 => 1, 4 => 1, 5 => 4}
107107
108108
"""
109-
@spec hist(list) :: map
109+
@spec hist([number]) :: map | nil
110110
def hist([]), do: nil
111111

112112
def hist(list) when is_list(list) do
@@ -124,7 +124,7 @@ defmodule Statistics do
124124
125125
If a non-empty list is provided, it is a call to Enum.min/1
126126
"""
127-
@spec min(list) :: number
127+
@spec min([number]) :: number | nil
128128
def min([]), do: nil
129129

130130
def min(list) do
@@ -141,7 +141,7 @@ defmodule Statistics do
141141
142142
If a non-empty list is provided, it is a call to Enum.max/1
143143
"""
144-
@spec max(list) :: number
144+
@spec max([number]) :: number |nil
145145
def max([]), do: nil
146146

147147
def max(list) do
@@ -162,7 +162,7 @@ defmodule Statistics do
162162
163163
"""
164164
# TODO change these to call `percentile/2`
165-
@spec quartile(list, atom) :: number
165+
@spec quartile([number], :first | :third) :: number
166166
def quartile(list, :first) do
167167
list |> split |> elem(0) |> median
168168
end
@@ -186,7 +186,7 @@ defmodule Statistics do
186186
9
187187
188188
"""
189-
@spec percentile(list, number) :: number
189+
@spec percentile([number], number) :: number | nil
190190
def percentile([], _), do: nil
191191
def percentile([x], _), do: x
192192
def percentile(list, 0), do: min(list)
@@ -210,7 +210,7 @@ defmodule Statistics do
210210
5
211211
212212
"""
213-
@spec range(list) :: number
213+
@spec range([number]) :: number | nil
214214
def range([]), do: nil
215215

216216
def range(list) when is_list(list) do
@@ -228,7 +228,7 @@ defmodule Statistics do
228228
4
229229
230230
"""
231-
@spec iqr(list) :: number
231+
@spec iqr([number]) :: number | nil
232232
def iqr([]), do: nil
233233

234234
def iqr(list) when is_list(list) do
@@ -249,7 +249,7 @@ defmodule Statistics do
249249
56.48979591836735
250250
251251
"""
252-
@spec variance(list) :: number
252+
@spec variance([number]) :: number | nil
253253
def variance([]), do: nil
254254

255255
def variance(list) when is_list(list) do
@@ -268,7 +268,7 @@ defmodule Statistics do
268268
0.5
269269
270270
"""
271-
@spec stdev(list) :: number
271+
@spec stdev([number]) :: number | nil
272272
def stdev([]), do: nil
273273

274274
def stdev(list) do
@@ -290,8 +290,7 @@ defmodule Statistics do
290290
7.3
291291
292292
"""
293-
@spec trimmed_mean(list, atom) :: number
294-
@spec trimmed_mean(list, tuple) :: number
293+
@spec trimmed_mean([number], atom | tuple) :: number | nil
295294
def trimmed_mean([], _), do: nil
296295

297296
def trimmed_mean(list, :iqr) do
@@ -317,7 +316,7 @@ defmodule Statistics do
317316
4.5204836768674568
318317
319318
"""
320-
@spec harmonic_mean(list) :: number
319+
@spec harmonic_mean([number]) :: number | nil
321320
def harmonic_mean([]), do: nil
322321

323322
def harmonic_mean(list) when is_list(list) do
@@ -343,7 +342,7 @@ defmodule Statistics do
343342
1.8171205928321397
344343
345344
"""
346-
@spec geometric_mean(list) :: number
345+
@spec geometric_mean([number]) :: number | nil
347346
def geometric_mean([]), do: nil
348347

349348
def geometric_mean(list) when is_list(list) do
@@ -372,7 +371,7 @@ defmodule Statistics do
372371
nil
373372
374373
"""
375-
@spec moment(list, pos_integer) :: number
374+
@spec moment([number], pos_integer) :: number | nil
376375
def moment(list, n \\ 1)
377376
# empty list has no moment
378377
def moment([], _), do: nil
@@ -399,7 +398,7 @@ defmodule Statistics do
399398
0.3436215967445454
400399
401400
"""
402-
@spec skew(list) :: number
401+
@spec skew([number]) :: number | nil
403402
def skew([]), do: nil
404403

405404
def skew(list) do
@@ -421,7 +420,7 @@ defmodule Statistics do
421420
-1.1530612244897964
422421
423422
"""
424-
@spec kurtosis(list) :: number
423+
@spec kurtosis([number]) :: number | nil
425424
def kurtosis([]), do: nil
426425

427426
def kurtosis(list) do
@@ -444,7 +443,7 @@ defmodule Statistics do
444443
0.9284766908852594, 0.09284766908852597, -0.7427813527082074]
445444
446445
"""
447-
@spec zscore(list) :: list
446+
@spec zscore([number]) :: list | nil
448447
def zscore(list) when is_list(list) do
449448
lmean = mean(list)
450449
lstdev = stdev(list)
@@ -462,7 +461,7 @@ defmodule Statistics do
462461
0.9897782665572894
463462
464463
"""
465-
@spec correlation(list, list) :: number
464+
@spec correlation([number], [number]) :: number
466465
def correlation(x, y) when length(x) == length(y) do
467466
xmean = mean(x)
468467
ymean = mean(y)
@@ -497,7 +496,7 @@ defmodule Statistics do
497496
-17.89
498497
499498
"""
500-
@spec covariance(list, list) :: number
499+
@spec covariance([number], [number]) :: number
501500
def covariance(x, y) when length(x) == length(y) do
502501
xmean = mean(x)
503502
ymean = mean(y)

0 commit comments

Comments
 (0)