@explorable-viz/fluid 0.7.89 → 0.7.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -6
- package/dist/fluid/fluid/lib/{convolution.fld → matrix.fld} +14 -4
- package/dist/fluid/fluid/lib/prelude.fld +2 -2
- package/dist/fluid/fluid/lib/stats.fld +21 -22
- package/dist/fluid/shared/fluid.mjs +2446 -4107
- package/dist/fluid/shared/load-figure.js +5728 -5392
- package/dist/fluid/shared/webtest-lib.js +16 -16
- package/package.json +6 -3
- package/script/bundle-website.sh +13 -2
- package/website/article/README.md +3 -0
- package/website/article/convolution/index.html +90 -0
- package/website/article/convolution/spec.json +9 -0
- package/website/article/fluid/convolution/emboss.fld +5 -0
- package/website/article/fluid/convolution/test-image.fld +7 -0
- package/website/article/fluid/convolution.fld +24 -0
- package/website/article/fluid/dataset/methane-emissions.fld +123 -0
- package/website/article/fluid/dataset/non-renewables.fld +67 -0
- package/website/article/fluid/dataset/renewables-new.fld +301 -0
- package/website/article/fluid/dataset/scigen/1805.02474v1-10.fld +17 -0
- package/website/article/fluid/moving-average.fld +19 -0
- package/website/article/fluid/non-renewables.fld +21 -0
- package/website/article/fluid/scigen.fld +50 -0
- package/website/article/fluid/util.fld +36 -0
- package/website/article/image/fluid-logo.png +0 -0
- package/website/article/image/iccs-full-logo.png +0 -0
- package/website/article/image/schmidtsciences_primary_color.png +0 -0
- package/website/article/index.html +26 -0
- package/website/article/moving-average/index.html +57 -0
- package/website/article/moving-average/spec.json +9 -0
- package/website/article/non-renewables/index.html +46 -0
- package/website/article/non-renewables/spec.json +9 -0
- package/website/article/test.mjs +10 -0
- package/.spago/aff/v7.0.0/.editorconfig +0 -13
- package/.spago/aff/v7.0.0/.eslintrc.json +0 -28
- package/.spago/aff/v7.0.0/.gitignore +0 -14
- package/.spago/aff/v7.0.0/.tidyrc.json +0 -10
- package/.spago/affjax/v13.0.0/.editorconfig +0 -13
- package/.spago/affjax/v13.0.0/.eslintrc.json +0 -28
- package/.spago/affjax/v13.0.0/.gitignore +0 -14
- package/.spago/affjax/v13.0.0/.tidyrc.json +0 -10
- package/.spago/affjax-web/v1.0.0/.editorconfig +0 -13
- package/.spago/affjax-web/v1.0.0/.eslintrc.json +0 -30
- package/.spago/affjax-web/v1.0.0/.gitignore +0 -14
- package/.spago/affjax-web/v1.0.0/.tidyrc.json +0 -10
- package/.spago/argonaut/v9.0.0/.editorconfig +0 -13
- package/.spago/argonaut/v9.0.0/.gitignore +0 -9
- package/.spago/argonaut/v9.0.0/.tidyrc.json +0 -10
- package/.spago/argonaut-codecs/v9.0.0/.editorconfig +0 -13
- package/.spago/argonaut-codecs/v9.0.0/.gitignore +0 -9
- package/.spago/argonaut-codecs/v9.0.0/.tidyrc.json +0 -10
- package/.spago/argonaut-core/v7.0.0/.editorconfig +0 -13
- package/.spago/argonaut-core/v7.0.0/.eslintrc.json +0 -29
- package/.spago/argonaut-core/v7.0.0/.gitignore +0 -14
- package/.spago/argonaut-core/v7.0.0/.tidyrc.json +0 -10
- package/.spago/argonaut-traversals/v10.0.0/.editorconfig +0 -13
- package/.spago/argonaut-traversals/v10.0.0/.gitignore +0 -9
- package/.spago/argonaut-traversals/v10.0.0/.tidyrc.json +0 -10
- package/.spago/arraybuffer-types/v3.0.2/.editorconfig +0 -13
- package/.spago/arraybuffer-types/v3.0.2/.gitignore +0 -9
- package/.spago/arraybuffer-types/v3.0.2/.tidyrc.json +0 -10
- package/.spago/arrays/v7.0.0/.eslintrc.json +0 -26
- package/.spago/arrays/v7.0.0/.gitignore +0 -9
- package/.spago/assert/v6.0.0/.eslintrc.json +0 -26
- package/.spago/assert/v6.0.0/.gitignore +0 -8
- package/.spago/avar/v5.0.0/.editorconfig +0 -13
- package/.spago/avar/v5.0.0/.eslintrc.json +0 -29
- package/.spago/avar/v5.0.0/.gitignore +0 -14
- package/.spago/avar/v5.0.0/.tidyrc.json +0 -10
- package/.spago/bifunctors/v6.0.0/.gitignore +0 -7
- package/.spago/catenable-lists/v7.0.0/.gitignore +0 -7
- package/.spago/console/v6.0.0/.eslintrc.json +0 -30
- package/.spago/console/v6.0.0/.gitignore +0 -9
- package/.spago/const/v6.0.0/.gitignore +0 -7
- package/.spago/contravariant/v6.0.0/.gitignore +0 -7
- package/.spago/control/v6.0.0/.gitignore +0 -7
- package/.spago/datetime/v6.1.0/.eslintrc.json +0 -26
- package/.spago/datetime/v6.1.0/.gitignore +0 -8
- package/.spago/debug/v6.0.0/.eslintrc.json +0 -36
- package/.spago/debug/v6.0.0/.gitignore +0 -8
- package/.spago/distributive/v6.0.0/.gitignore +0 -7
- package/.spago/effect/v4.0.0/.eslintrc.json +0 -26
- package/.spago/effect/v4.0.0/.gitignore +0 -8
- package/.spago/either/v6.1.0/.gitignore +0 -7
- package/.spago/enums/v6.0.0/.gitignore +0 -7
- package/.spago/exceptions/v6.0.0/.eslintrc.json +0 -26
- package/.spago/exceptions/v6.0.0/.gitignore +0 -8
- package/.spago/exists/v6.0.0/.gitignore +0 -7
- package/.spago/filterable/v5.0.0/.gitignore +0 -11
- package/.spago/foldable-traversable/v6.0.0/.eslintrc.json +0 -26
- package/.spago/foldable-traversable/v6.0.0/.gitignore +0 -8
- package/.spago/foreign/v7.0.0/.eslintrc.json +0 -26
- package/.spago/foreign/v7.0.0/.gitignore +0 -8
- package/.spago/foreign-object/v4.0.0/.eslintrc.json +0 -26
- package/.spago/foreign-object/v4.0.0/.gitignore +0 -8
- package/.spago/fork/v6.0.0/.editorconfig +0 -13
- package/.spago/fork/v6.0.0/.gitignore +0 -9
- package/.spago/fork/v6.0.0/.tidyrc.json +0 -10
- package/.spago/form-urlencoded/v7.0.0/.editorconfig +0 -13
- package/.spago/form-urlencoded/v7.0.0/.gitignore +0 -9
- package/.spago/form-urlencoded/v7.0.0/.tidyrc.json +0 -10
- package/.spago/free/v7.0.0/.gitignore +0 -8
- package/.spago/functions/v6.0.0/.eslintrc.json +0 -26
- package/.spago/functions/v6.0.0/.gitignore +0 -8
- package/.spago/functors/v5.0.0/.gitignore +0 -7
- package/.spago/gen/v4.0.0/.gitignore +0 -8
- package/.spago/graphs/v8.0.0/.gitignore +0 -7
- package/.spago/http-methods/v6.0.0/.editorconfig +0 -13
- package/.spago/http-methods/v6.0.0/.gitignore +0 -9
- package/.spago/http-methods/v6.0.0/.tidyrc.json +0 -10
- package/.spago/identity/v6.0.0/.gitignore +0 -7
- package/.spago/integers/v6.0.0/.eslintrc.json +0 -26
- package/.spago/integers/v6.0.0/.gitignore +0 -8
- package/.spago/invariant/v6.0.0/.gitignore +0 -7
- package/.spago/js-date/v8.0.0/.editorconfig +0 -13
- package/.spago/js-date/v8.0.0/.eslintrc.json +0 -29
- package/.spago/js-date/v8.0.0/.gitignore +0 -14
- package/.spago/js-date/v8.0.0/.tidyrc.json +0 -10
- package/.spago/js-uri/v3.0.0/.eslintrc.json +0 -30
- package/.spago/js-uri/v3.0.0/.gitignore +0 -14
- package/.spago/js-uri/v3.0.0/.tidyrc.json +0 -10
- package/.spago/lazy/v6.0.0/.eslintrc.json +0 -26
- package/.spago/lazy/v6.0.0/.gitignore +0 -8
- package/.spago/lcg/v4.0.0/.gitignore +0 -8
- package/.spago/lists/v7.0.0/.gitignore +0 -7
- package/.spago/maybe/v6.0.0/.gitignore +0 -7
- package/.spago/media-types/v6.0.0/.editorconfig +0 -13
- package/.spago/media-types/v6.0.0/.gitignore +0 -9
- package/.spago/media-types/v6.0.0/.tidyrc.json +0 -10
- package/.spago/newtype/v5.0.0/.gitignore +0 -7
- package/.spago/node-buffer/v8.0.0/.eslintrc.json +0 -26
- package/.spago/node-buffer/v8.0.0/.gitignore +0 -8
- package/.spago/node-child-process/v9.0.0/.eslintrc.json +0 -29
- package/.spago/node-child-process/v9.0.0/.gitignore +0 -8
- package/.spago/node-fs/v9.1.0/.eslintrc.json +0 -29
- package/.spago/node-fs/v9.1.0/.gitignore +0 -9
- package/.spago/node-http/v8.0.0/.eslintrc.json +0 -29
- package/.spago/node-http/v8.0.0/.gitignore +0 -8
- package/.spago/node-net/v4.0.0/.eslintrc.json +0 -29
- package/.spago/node-net/v4.0.0/.gitignore +0 -8
- package/.spago/node-path/v5.0.0/.eslintrc.json +0 -26
- package/.spago/node-path/v5.0.0/.gitignore +0 -8
- package/.spago/node-process/v10.0.0/.eslintrc.json +0 -29
- package/.spago/node-process/v10.0.0/.gitignore +0 -8
- package/.spago/node-process/v11.0.0/.eslintrc.json +0 -29
- package/.spago/node-process/v11.0.0/.gitignore +0 -8
- package/.spago/node-process/v11.1.0/.eslintrc.json +0 -29
- package/.spago/node-process/v11.1.0/.gitignore +0 -8
- package/.spago/node-process/v11.2.0/.eslintrc.json +0 -29
- package/.spago/node-process/v11.2.0/.gitignore +0 -8
- package/.spago/node-streams/v7.0.0/.eslintrc.json +0 -29
- package/.spago/node-streams/v7.0.0/.gitignore +0 -8
- package/.spago/node-url/v6.0.0/.eslintrc.json +0 -26
- package/.spago/node-url/v6.0.0/.gitignore +0 -8
- package/.spago/nonempty/v7.0.0/.gitignore +0 -7
- package/.spago/now/v6.0.0/.editorconfig +0 -13
- package/.spago/now/v6.0.0/.eslintrc.json +0 -29
- package/.spago/now/v6.0.0/.gitignore +0 -14
- package/.spago/now/v6.0.0/.tidyrc.json +0 -10
- package/.spago/nullable/v6.0.0/.editorconfig +0 -13
- package/.spago/nullable/v6.0.0/.eslintrc.json +0 -29
- package/.spago/nullable/v6.0.0/.gitignore +0 -14
- package/.spago/nullable/v6.0.0/.tidyrc.json +0 -10
- package/.spago/options/v7.0.0/.editorconfig +0 -13
- package/.spago/options/v7.0.0/.gitignore +0 -9
- package/.spago/options/v7.0.0/.tidyrc.json +0 -10
- package/.spago/optparse/v5.0.0/.gitignore +0 -8
- package/.spago/optparse/v5.0.0/.npmrc +0 -1
- package/.spago/optparse/v6.0.0/.gitignore +0 -8
- package/.spago/optparse/v6.0.0/.npmrc +0 -1
- package/.spago/ordered-collections/v3.0.0/.gitignore +0 -8
- package/.spago/orders/v6.0.0/.gitignore +0 -7
- package/.spago/parallel/v6.0.0/.gitignore +0 -7
- package/.spago/parsing/v10.0.0/.editorconfig +0 -13
- package/.spago/parsing/v10.0.0/.gitignore +0 -10
- package/.spago/parsing/v10.0.0/.tidyoperators +0 -231
- package/.spago/parsing/v10.0.0/.tidyrc.json +0 -10
- package/.spago/partial/v4.0.0/.eslintrc.json +0 -26
- package/.spago/partial/v4.0.0/.gitignore +0 -8
- package/.spago/posix-types/v6.0.0/.gitignore +0 -7
- package/.spago/prelude/v6.0.0/.eslintrc.json +0 -26
- package/.spago/prelude/v6.0.0/.gitignore +0 -8
- package/.spago/profunctor/v6.0.0/.gitignore +0 -7
- package/.spago/profunctor-lenses/v8.0.0/.editorconfig +0 -13
- package/.spago/profunctor-lenses/v8.0.0/.gitignore +0 -9
- package/.spago/profunctor-lenses/v8.0.0/.tidyrc.json +0 -10
- package/.spago/psci-support/v6.0.0/.eslintrc.json +0 -28
- package/.spago/psci-support/v6.0.0/.gitignore +0 -8
- package/.spago/quickcheck/v8.0.1/.eslintrc.json +0 -26
- package/.spago/quickcheck/v8.0.1/.gitignore +0 -8
- package/.spago/random/v6.0.0/.eslintrc.json +0 -26
- package/.spago/random/v6.0.0/.gitignore +0 -8
- package/.spago/record/v4.0.0/.eslintrc.json +0 -26
- package/.spago/record/v4.0.0/.gitignore +0 -8
- package/.spago/refs/v6.0.0/.eslintrc.json +0 -26
- package/.spago/refs/v6.0.0/.gitignore +0 -8
- package/.spago/st/v6.0.0/.eslintrc.json +0 -26
- package/.spago/st/v6.0.0/.gitignore +0 -8
- package/.spago/strings/v6.0.0/.eslintrc.json +0 -26
- package/.spago/strings/v6.0.0/.gitignore +0 -8
- package/.spago/tailrec/v6.0.0/.gitignore +0 -7
- package/.spago/transformers/v6.0.0/.gitignore +0 -7
- package/.spago/tuples/v7.0.0/.gitignore +0 -7
- package/.spago/type-equality/v4.0.1/.gitignore +0 -7
- package/.spago/typelevel-prelude/v7.0.0/.gitignore +0 -8
- package/.spago/unfoldable/v6.0.0/.eslintrc.json +0 -26
- package/.spago/unfoldable/v6.0.0/.gitignore +0 -8
- package/.spago/unicode/v6.0.0/.editorconfig +0 -13
- package/.spago/unicode/v6.0.0/.gitattributes +0 -2
- package/.spago/unicode/v6.0.0/.gitignore +0 -19
- package/.spago/unicode/v6.0.0/.tidyrc.json +0 -10
- package/.spago/unsafe-coerce/v6.0.0/.eslintrc.json +0 -26
- package/.spago/unsafe-coerce/v6.0.0/.gitignore +0 -8
- package/.spago/web-dom/v6.0.0/.eslintrc.json +0 -29
- package/.spago/web-dom/v6.0.0/.gitignore +0 -9
- package/.spago/web-events/v4.0.0/.eslintrc.json +0 -29
- package/.spago/web-events/v4.0.0/.gitignore +0 -8
- package/.spago/web-file/v4.0.0/.eslintrc.json +0 -29
- package/.spago/web-file/v4.0.0/.gitignore +0 -8
- package/.spago/web-html/v4.0.0/.eslintrc.json +0 -29
- package/.spago/web-html/v4.0.0/.gitignore +0 -8
- package/.spago/web-storage/v5.0.0/.eslintrc.json +0 -29
- package/.spago/web-storage/v5.0.0/.gitignore +0 -8
- package/.spago/web-xhr/v5.0.0/.eslintrc.json +0 -29
- package/.spago/web-xhr/v5.0.0/.gitignore +0 -8
package/README.md
CHANGED
@@ -9,7 +9,7 @@ Fluid is an experimental programming language which integrates a bidirectional d
|
|
9
9
|
|
10
10
|
### Software required
|
11
11
|
- git
|
12
|
-
- Node.js >=
|
12
|
+
- Node.js >=18.0.0
|
13
13
|
- yarn >= 1.22
|
14
14
|
|
15
15
|
Additionally, for Windows users only:
|
@@ -20,11 +20,12 @@ Additionally, for Windows users only:
|
|
20
20
|
|
21
21
|
- Clone the repository (for Windows users, do this under the Ubuntu WSL)
|
22
22
|
- Run `./script/setup/dev-setup.sh` from the top-level directory
|
23
|
-
-
|
23
|
+
- `yarn install` to install Node dependencies
|
24
|
+
- `yarn build`
|
24
25
|
|
25
26
|
## Use
|
26
27
|
|
27
|
-
The following assumes you have already
|
28
|
+
The following assumes you have already successfully run `yarn build` (see above).
|
28
29
|
|
29
30
|
### Running programs from the command line
|
30
31
|
|
@@ -41,10 +42,14 @@ Note that the path is relative and should not include the `.fld` extension, e.g.
|
|
41
42
|
Success
|
42
43
|
```
|
43
44
|
|
44
|
-
### Running
|
45
|
+
### Running websites locally (as part of Fluid development)
|
46
|
+
As an example, to build and run the website `literate-execution`:
|
47
|
+
- `yarn build` to ensure Fluid source code has been compiled (can be skipped on subsequent runs)
|
48
|
+
- `yarn bundle-website -w literate-execution` (can be skipped if the website being run is `fluid-org`)
|
49
|
+
- `yarn serve literate-execution` (you may be prompted to proceed; press `y`)
|
50
|
+
- Open a browser to the served URL (defaults to `127.0.0.1:8080`)
|
45
51
|
|
46
|
-
|
47
|
-
- Open a browser at the served URL (usually `127.0.0.1:8080`)
|
52
|
+
Note: `yarn bundle-serve literate-execution` is a convenient shorthand for `bundle-website -w` followed by `serve`.
|
48
53
|
|
49
54
|
## Testing
|
50
55
|
|
@@ -16,16 +16,26 @@ let extend m n image =
|
|
16
16
|
|
17
17
|
let matrixSum matr =
|
18
18
|
let (m, n) = dims matr
|
19
|
-
in
|
19
|
+
in foldl (+) 0 [ matr!(i, j) | (i, j) <- range (1, 1) (m, n)];
|
20
20
|
|
21
21
|
let convolve image kernel lookup =
|
22
22
|
let ((m, n), (i, j)) = (dims image, dims kernel);
|
23
23
|
(half_i, half_j) = (i `quot` 2, j `quot` 2);
|
24
24
|
area = i * j
|
25
|
-
in [|let interMatrix =
|
25
|
+
in [| let interMatrix = """Intermediate matrix for element (${m'}, ${n'})"""
|
26
|
+
[|
|
26
27
|
let x = m' + i' - 1 - half_i;
|
27
|
-
y = n' + j' - 1 - half_j
|
28
|
-
|
28
|
+
y = n' + j' - 1 - half_j in
|
29
|
+
"""Multiply these two elements"""
|
30
|
+
lookup x y image * kernel!(i', j')
|
29
31
|
| (i', j') in (i, j) |]
|
30
32
|
in matrixSum interMatrix `quot` area
|
31
33
|
| (m', n') in (m, n) |];
|
34
|
+
|
35
|
+
let matMul a b =
|
36
|
+
let ((m, n), (i, j)) = (dims a, dims b) in
|
37
|
+
if not (n == i)
|
38
|
+
then error "Dimensions don't line up"
|
39
|
+
else """Intermediate matrix"""
|
40
|
+
[| sum [ a!(i', k) * b!(k, j') | k <- enumFromTo 1 n]
|
41
|
+
| (i', j') in (m, j) |];
|
@@ -267,9 +267,9 @@ let slice begin end xs =
|
|
267
267
|
|
268
268
|
|
269
269
|
-- (a -> Boolean) -> List a -> (List a, List a)
|
270
|
-
let splitOn p data =
|
270
|
+
let splitOn p data =
|
271
271
|
let go fls trs [] = (reverse fls, reverse trs);
|
272
|
-
go fls trs (x : xs) =
|
272
|
+
go fls trs (x : xs) =
|
273
273
|
if p x
|
274
274
|
then go fls (x : trs) xs
|
275
275
|
else go (x : fls) trs xs
|
@@ -19,46 +19,45 @@ let mergesort xs =
|
|
19
19
|
let (ys, zs) = split xs in
|
20
20
|
merge (mergesort ys) (mergesort zs);
|
21
21
|
|
22
|
-
-- assume
|
23
|
-
let findQuantile q p
|
24
|
-
let rank = (p / q) * (length
|
22
|
+
-- assume xs is sorted
|
23
|
+
let findQuantile q p xs =
|
24
|
+
let rank = (p / q) * (length xs - 1)
|
25
25
|
in if rank == floor rank
|
26
|
-
then nth rank
|
26
|
+
then nth rank xs
|
27
27
|
else let x1 = floor rank;
|
28
28
|
x2 = ceiling rank;
|
29
|
-
left = nth x1
|
30
|
-
right = nth x2
|
29
|
+
left = nth x1 xs;
|
30
|
+
right = nth x2 xs
|
31
31
|
in left + (rank - x1) * (right - left);
|
32
32
|
|
33
33
|
let findPercentile = findQuantile 100;
|
34
34
|
|
35
35
|
let accumBins data Nil = [];
|
36
36
|
accumBins data [l] = [];
|
37
|
-
accumBins data (l : r : es) =
|
37
|
+
accumBins data (l : r : es) =
|
38
38
|
let (ge, le) = splitOn (fun x -> x <= r) data
|
39
|
-
in (le
|
39
|
+
in (le, r - l) : accumBins ge (r : es);
|
40
40
|
|
41
|
-
let cut
|
42
|
-
let low = minimum
|
43
|
-
binwidth = (maximum
|
41
|
+
let cut xs nbins =
|
42
|
+
let low = minimum xs;
|
43
|
+
binwidth = (maximum xs - low) / nbins;
|
44
44
|
edges = [ low + (x * binwidth) | x <- enumFromTo 0 nbins ]
|
45
|
-
in accumBins
|
45
|
+
in accumBins xs edges;
|
46
46
|
|
47
|
-
let qcut
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
in accumBins data edges;
|
47
|
+
let qcut xs qs =
|
48
|
+
let (low, high) = (minimum xs, maximum xs);
|
49
|
+
edges = append (low : [ findPercentile x xs | x <- qs], [high])
|
50
|
+
in accumBins xs edges;
|
52
51
|
|
53
|
-
let likelihoodLE
|
54
|
-
length (filter (fun x -> x <= target)
|
52
|
+
let likelihoodLE xs target =
|
53
|
+
length (filter (fun x -> x <= target) xs) / length xs;
|
55
54
|
|
56
|
-
let likelihoodGE
|
57
|
-
length (filter (fun x -> x >= target)
|
55
|
+
let likelihoodGE xs target =
|
56
|
+
length (filter (fun x -> x >= target) xs) / length xs;
|
58
57
|
|
59
58
|
let likelihoodMap table prob = (fromSome (find (fun x -> x.prob <= prob) table)).msg;
|
60
59
|
|
61
|
-
let mkPercent num =
|
60
|
+
let mkPercent num = numToStr (num * 100) ++ "%";
|
62
61
|
|
63
62
|
let leqP n m =
|
64
63
|
if n <= m
|