/aoc-reasonml

Advent of Code with ReasonML.

Primary LanguageReasonMIT LicenseMIT

Advent of Code with Reason

Hey!

This is started kit for working Advent of Code puzzle. You can clone it and build it with esy

git clone https://github.com/ManasJayanth/reason-aoc-starter
cd reason-aoc-starter
esy

If you dont have esy already installed,

npm i -g esy
# or
yarn global add esy

Forum discussion

Associated forum post can be found here. If you have any questions, feel free to ask on the there. Tag me on Discord if you like on Reason Servers. I'm Manas (prometheansacrifice)#0219 there. Tips and new ideas are welcome too!

Helper libraries available

  • @reason-native/console for logging
  • @reason-native/fs for file utilities
  • @reason-native/fp for type safe path handling
  • @reason-native/rely for unit testing the puzzle cases
  • @reason-native/cli for CLI parsing
  • @opam/container for an extended standard library
  • @opam/angstrom for parsing the puzzle input

Build tools used

  • Dune - to build the project
  • Pesy - to provide an alternative convenient JSON syntax for Dune file. Optional. Use esy pesy eject ./path/to/sub-package to use the Dune file for that subpackage.

Documentation for provided helper utils

(TODO)

Documentation (quick primers) for included libraries

@reason-native/console

Reason is a type safe language and functions have to be intentionally written in a way accept arguments of any type. Benefits of such strong typing is seen in large codebases, but for simple printing, one could need type specific printers like print_int etc.

@reason-native/console provided a familiar generic Console.log inspired by the browser's console.log. See here

Console.log("Some string here");
Console.log(true);
Console.log(Some("hi"));
Console.log(None);