Commit graph

307 commits

Author SHA1 Message Date
Michael Downey
7e074d300e cleaning up and adding comments 2021-11-09 14:37:31 -05:00
Michael Downey
1bc278d962 initial commit of Str.trimLeft 2021-11-09 14:25:24 -05:00
Folkert
94efbd0e95 Merge remote-tracking branch 'origin/trunk' into builtins-list-take-last 2021-11-09 16:18:19 +01:00
satotake
772fc9c021 Implement List.takeLast 2021-11-09 12:26:17 +00:00
ayazhafiz
074c2ca398 Remove stale DICT_TEST_HASH reference 2021-11-08 21:04:59 -05:00
ayazhafiz
f65b174ab5 Implement List.find
`List.find : List elem, (elem -> Bool) -> Result elem [ NotFound ]*`
behaves as follows:

```
>>> List.find [1, 2, 3] (\n -> n > 2)
Ok 2
>>> List.find [1, 2, 3] (\n -> n > 4)
Err NotFound
```

We implement this as builtin in two phases. First, we call out to a
pure-llvm-lowlevel `ListFindUnsafe` that returns a record indicating
whether a satisfying element was found, and the value of that element
(the value is all null bytes if the element wasn't found). Then, we lift
that record to a `Result` via a standard construction of the can AST.

Closes #1909
2021-11-08 21:03:14 -05:00
satotake
9087bf7273 Merge branch 'trunk' into builtsins-list-take-first 2021-11-08 14:32:36 +00:00
satotake
878400f95f Implement List.takeFirst 2021-11-08 14:10:53 +00:00
satotake
97c82d8d51 pick 02acef6 2021-11-08 11:15:20 +00:00
Kevin Sjöberg
44938a9e35 Implement List.any 2021-11-07 20:44:10 +01:00
ayazhafiz
0d2ed76334 Implement List.joinMap
Closes #1887
2021-11-07 11:08:20 -05:00
Chelsea Troy
208bce563a
Merge branch 'trunk' into dropfirst-builtin 2021-11-05 23:34:46 -05:00
Eric Newbury
f3a350dd74 add dropFirst builtin 2021-11-05 16:12:29 -04:00
Folkert
c5005d3dd1 Merge remote-tracking branch 'origin/trunk' into partialproc-by-reference 2021-11-03 15:32:39 +01:00
Folkert
a15183a7d1 refactor 2021-11-03 14:09:04 +01:00
Kevin Sjöberg
3fbb081f75 Correct comment of List.map3 signature 2021-10-31 21:08:41 +01:00
Kevin Sjöberg
f9ed060e49 Implement List.map4 2021-10-31 21:08:41 +01:00
Chelsea Troy
4afaf96aea
Add List.max builtin 2021-10-30 19:17:35 -05:00
Folkert de Vries
aa978ae6d9
Merge branch 'trunk' into list_min 2021-10-28 20:32:27 +02:00
Tim Whiting
329c035e24 fix comment 2021-10-27 20:31:07 -06:00
Tim Whiting
c721a1cc1f add builtin List.min 2021-10-27 20:28:34 -06:00
Folkert de Vries
29bd4e3e50
Merge branch 'trunk' into str_trim 2021-10-26 22:45:32 +02:00
Dan Knutson
7ed37bf544 use lowlevel_n helper 2021-10-25 20:22:37 -05:00
Dan Knutson
e1b9699272 remove TODO tags 2021-10-25 20:22:37 -05:00
Dan Knutson
e7523ad41d add Roc wiring 2021-10-25 20:22:37 -05:00
Chelsea Troy
789cc5acc0
cargo fmt 2021-10-25 00:28:50 -05:00
Chelsea Troy
063d7b178b
Figured out why dropLast call was producing an argument mismatch:
- Although list_drop_last's LowLevel operation modeling (body) was correct, the defn() CALLED that body with an extra argument for index (a copy-paste error from dropAt).
- List.dropAt works now :)
2021-10-25 00:06:37 -05:00
Chelsea Troy
9633a5adaa
Fix the build, but List.dropLast itself still doesn't work. 2021-10-23 00:29:13 -05:00
Chelsea Troy
fd83c3b749
Branch the dropLast functionality from dropAt, inserting an index gathered by subtracting 1 from the list length 2021-10-23 00:17:08 -05:00
Folkert
4152519bfb formatting & catch zig overflow error 2021-10-17 18:03:40 +02:00
Chelsea Troy
0cc6e44d35
Thread through the divCeil implementation from Zig:
+ OPEN QUESTION: Evidently the Zig implementation can throw an overflow error. Do we want to do something in Roc to fix this?
2021-10-17 10:46:16 -05:00
Folkert
94e8c62613 make things compile, base64 has a memory leak 2021-10-06 22:57:11 +02:00
Richard Feldman
90401477c9 Fix List.walkUntil arg order 2021-10-06 07:32:56 -04:00
Richard Feldman
8391c337ab Merge remote-tracking branch 'origin/trunk' into list-walk-flip 2021-10-05 20:50:50 -04:00
Dan Knutson
3baff93a97 add first version of List.dropAt
* adds an implementation with no uniqueness/mutability
2021-10-03 13:55:11 -05:00
Kofi Gumbs
b32a42f05a Add Str.repeat builtin 2021-09-29 17:32:42 -04:00
Richard Feldman
71a678c092 Update Dict.walk to match List.walk 2021-08-30 23:05:15 -04:00
Richard Feldman
1abebb7713 Reorder args for List.walk and friends 2021-08-30 22:45:10 -04:00
Folkert
1ca0b797ea make Dict.len return a nat 2021-08-29 23:04:20 +02:00
Folkert
de7db3e730 make more things infer as NAT 2021-08-29 13:31:55 +02:00
Jared Ramirez
4b2a63fb30 Merge branch 'trunk' of https://github.com/rtfeldman/roc into store-dec-as-str 2021-08-26 11:23:17 -07:00
Folkert
6a43be26d3 fix usize vs. u32/u64 conflict 2021-08-25 20:58:42 +02:00
Joshua Hoeflich
b57ebb6229 Remove castToNat 2021-08-19 16:11:21 -05:00
Jared Ramirez
d69b9173fc Also store f64 for things like pattern comparisons, etc 2021-08-18 17:18:13 -07:00
Joshua Hoeflich
99feb7ce67 Fix typo in comment 2021-08-18 18:23:19 -05:00
Joshua Hoeflich
2672c8ed10 NumBytesToU16 and NumBytesToU32 tested 2021-08-18 17:39:59 -05:00
Joshua Hoeflich
a4197d073c bytesToU16 and bytesToU32 have proper types 2021-08-18 15:46:53 -05:00
Joshua Hoeflich
b4f575736b castToNat working 2021-08-18 11:31:48 -05:00
Jared Ramirez
adabf70132 [WIP] Update can & pattern to store numbers as validated strs 2021-08-16 16:16:10 -07:00
Joshua Hoeflich
22e781259d TODO: Actually implement the functions 2021-08-14 19:28:13 -05:00