kaguya_rs 0.1.5

Functional Programming tools and ADTs
Documentation
### Roadmap
1. Non curry function
2. enum, struct and trait
3. impl of ADT
4. macro
5. persistence data structure
6. refactor whole lib by embedding persistence data structure to improve performance

#### functions
- [x] `map` - 0.1.1, with curry
- [x] `foldl` - 0.1.1, with curry
- [x] `foldr` - 0.1.1, with curry
- [ ] `trim`
- [ ] `all`
- [ ] `all_pass`
- [ ] `and`
- [ ] `any`
- [ ] `any_pass`
- [ ] `append`
- [ ] `apply`
- [ ] `apply_to`
- [ ] `concat`
- [ ] `contains`
- [ ] `count`
- [ ] `count_if`
- [x] `head` - 0.1.5
- [x] `tail` - 0.1.5
- [x] `init` - 0.1.5
- [x] `last` - 0.1.5
- [x] ~~drop~~ -> `skip` - 0.1.5
- [ ] ~~drop_last~~ -> `skip_last`
- [ ] ~~drop_while~~ -> `skip_while`
- [ ] ~~drop_last_while~~ -> `skip_last_while`
- [ ] ~~drop_duplicate~~ -> `skip_duplicate`
- [ ] `either`
- [ ] `ends_with`
- [ ] `equals`
- [x] `filter` - 0.1.1, with curry
- [x] `find<T>` - 0.1.5, with macro
- [ ] `find_index`
- [ ] `find_last`
- [ ] `find_last_index`
- [ ] `for_each`
- [ ] `to_map`
- [ ] `group_by`
- [ ] `group_with`
- [ ] `gt`
- [ ] `gte`
- [ ] `identical`
- [ ] `if_else`
- [ ] `index_of`
- [ ] `insert`
- [ ] `insert_all`
- [ ] `intersperse`
- [ ] `is_empty`
- [ ] `join`
- [ ] `last_index_of`
- [x] `length` - 0.1.5
- [ ] `lens`
- [ ] `lens_index`
- [ ] `lens_path`
- [ ] `lens_prop`
- [ ] `lift`
- [ ] `lt`
- [ ] `lte`
- [ ] `map_accum`
- [ ] `map_accum_right`
- [ ] `match`
- [x] ~~mod~~ -> `rem` - 0.1.5
- [x] `max` - 0.1.5
- [ ] `max_by`
- [ ] `mean`
- [ ] `median`
- [ ] `memoize_with`
- [x] `min` - 0.1.5
- [ ] `min_by`
- [x] `mul` - 0.1.5, with macro
- [x] `neg` - 0.1.5
- [ ] `none`
- [ ] `not`
- [ ] `nth`
- [ ] `once`
- [ ] `or`
- [ ] `over`
- [ ] `partition`
- [ ] `prepend`
- [x] `product` - 0.1.5, with shorthand macro
- [ ] `foldl_by`
- [ ] `foldr_by`
- [ ] `fold_while`
- [x] `filter_not` - 0.1.1, with curry
- [ ] `remove`
- [ ] `repeat`
- [ ] `replace`
- [x] `reverse` - 0.1.5
- [ ] `scan`
- [ ] `sequence`
- [ ] `set`
- [ ] `slice`
- [x] ~~sort~~ -> `sorted` - 0.1.5
- [x] ~~sort_by~~ -> `sorted_by` - 0.1.5
- [ ] `split`
- [ ] `split_at`
- [ ] `split_every`
- [ ] `split_when`
- [ ] `starts_with`
- [x] `sum` - 0.1.2, with shorthand macro
- [ ] `diff`
- [x] `take` - 0.1.5
- [ ] `take_last`
- [ ] `take_last_while`
- [ ] `take_while`
- [ ] `tap`
- [ ] `test`
- [ ] `times`
- [ ] `to_lower`
- [ ] `to_upper`
- [ ] `transduce`
- [ ] `transpose`
- [ ] `transverse`
- [ ] `try_catch`
- [ ] `type_of`
- [ ] `unapply`
- [ ] `unfold`
- [ ] `union`
- [ ] `union_with`
- [ ] `unique`
- [ ] `unique_by`
- [ ] `unique_with`
- [ ] `unless`
- [ ] `unnest`
- [ ] `until`
- [ ] `update`
- [ ] `use_with`
- [ ] `view`
- [ ] `when`
- [ ] `without`
- [x] `zip` - 0.1.5
- [x] `zip_with` - 0.1.5
- [x] `concat` - 0.1.5
- [x] `id` - 0.1.5
- [x] `abs` - 0.1.5
- [x] `signum` - 0.1.5
- [x] `add` - 0.1.5, with macro
- [x] `sub` - 0.1.5, with macro
- [x] `div` - 0.1.5, with macro
#### Macro(Auto Curry)
- [ ] `ap! //Applicative`
- [ ] `flat_map! //Monad`
- [x] `compose!` - 0.1.0
- [x] `pipe!` - 0.1.0
- [ ] `converge!`
- [ ] `flatten!`
- [x] `fst` - 0.1.5
- [x] `snd` - 0.1.5
- [x] `even` - 0.1.5
- [x] `odd` - 0.1.5
- [x] `recip` - 0.1.5
- [x] `always` - 0.1.5
#### I have no idea how to do it
- [ ] `curry`
- [ ] `partial`
#### Maybe it is not necessary in Rust
- [ ] `to_string`
#### Other
- [x] `ls!` - 0.1.2: list comprehension
#### On hold
- [] ~~sort_with~~ -> `sorted_with` - may implement by using unsafe...?

### Some other todo list
- as the default sorting algorithm of Rust std is quicksort, all sorting functions implementation may be require to change after persistance data structure is implemented
- Planning: RPDS will be used for persistance data structure