witchcraft v0.5.0-alpha Release Notes

Release Date: 2016-09-12 // about 8 years ago
  • Monads

    ๐Ÿ“š Finally, monads! Still could use more documentation, but they're here and they work ๐Ÿ˜„

    [1, 2, 3] \>\>\> fn x -\> [x + 1] \>\>\> fn y -\> [y \* x, y \* 10, x - 1] endend#=\> [2, 20, 0, 6, 30, 1, 12, 40, 2][1, 2, 3]\>\>\> fn x -\> [x + 1] end\>\>\> fn y -\> [y \* 10, y - 1] end#=\> [20, 1, 30, 2, 40, 3]
    

    Of course they work on things other than lists. I'll will be moving the ADT-specifc implementations to Algae, so if you want Maybe, Either, and friends, please use it in conjunction with that library.

    Major Reorganization

    Still a bunch more to do, but this is already much better. Merging to master, and will continue to tighten stuff up and work through the roadmap.


Previous changes from v0.3.0

  • Applicative Functors are here!

    Things to note:

    • wrap (i.e.: pure) & apply are here!
      • Operator for apply: <<~ and ~>>
      • Reversed operator arrow direction for consistence with Elixir
      • ie: in Haskell we think about applyping "over" things (apply [(+1)] [1,2,3])
      • In Elixir, we're piping thing into the application ([1,2,3] ~>> [&(&1 + 1)])
      • Can still write in the Haskell order, with reversed operators:
        • Haskell: (\x y -> x + y) <$> [1,2,3] <*> [4,5,6]
        • Elixir: &(&1 + &2) <~ [1,2,3] <<~ [4,5,6]
    • Have to exclude Kernel.apply for modules
      • In the future, we will either need to create a use, or rename apply (probably the later)