aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2023-02-02-exploring-hare.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/blog/2023-02-02-exploring-hare.md')
-rw-r--r--content/blog/2023-02-02-exploring-hare.md141
1 files changed, 65 insertions, 76 deletions
diff --git a/content/blog/2023-02-02-exploring-hare.md b/content/blog/2023-02-02-exploring-hare.md
index 15c448c..1424aff 100644
--- a/content/blog/2023-02-02-exploring-hare.md
+++ b/content/blog/2023-02-02-exploring-hare.md
@@ -7,87 +7,80 @@ draft = false
# A Quick Note
-By no means am I a professional developer, so this post will be rather
-short. I won\'t be going into depth on the specification or anything
-that technical.
+By no means am I a professional developer, so this post will be rather short. I
+won't be going into depth on the specification or anything that technical.
-Instead, I will simply be talking about how I (a relatively basic
-hobbyist programmer) have been playing with Hare and what intrigues me
-about the language.
+Instead, I will simply be talking about how I (a relatively basic hobbyist
+programmer) have been playing with Hare and what intrigues me about the
+language.
# Hare
-The [Hare](https://harelang.org) programming language is a
-straightforward language that should look familiar if you\'ve ever
-programmed with C, Rust, or other languages that aim to build software
-at the system-level.
+The [Hare](https://harelang.org) programming language is a straightforward
+language that should look familiar if you've ever programmed with C, Rust, or
+other languages that aim to build software at the system-level.
The Hare homepage states the following:
-> Hare is a systems programming language designed to be simple, stable,
-> and robust. Hare uses a static type system, manual memory management,
-> and minimal runtime. It is well-suited to writing operating systems,
-> system tools, compilers, networking software, and other low-level,
-> high performance tasks.
+> Hare is a systems programming language designed to be simple, stable, and
+> robust. Hare uses a static type system, manual memory management, and minimal
+> runtime. It is well-suited to writing operating systems, system tools,
+> compilers, networking software, and other low-level, high performance tasks.
-I have found this all to be true while playing with it for the first
-time today. In the next few sections, I\'m going to walk through my
-installation and first program.
+I have found this all to be true while playing with it for the first time today.
+In the next few sections, I'm going to walk through my installation and first
+program.
## Installation
-I\'m currently running Alpine Linux on my Thinkpad, so the installation
-was quite easy as there is a package for Hare in the `apk`
-repositories.
+I'm currently running Alpine Linux on my Thinkpad, so the installation was
+quite easy as there is a package for Hare in the `apk` repositories.
```sh
doas apk add hare hare-doc
```
-However, I was able to install Hare from scratch on Fedora Linux a short
-while ago, which was also very easy to do. If you need further
-instructions and Hare doesn\'t have a package on your system, take a
-look at the [Hare Installation](https://harelang.org/installation/)
-page.
+However, I was able to install Hare from scratch on Fedora Linux a short while
+ago, which was also very easy to do. If you need further instructions and Hare
+doesn't have a package on your system, take a look at the [Hare
+Installation](https://harelang.org/installation/) page.
## Creating a Test Project
In order to play with the language, I created
-[hare-test](https://git.sr.ht/~cmc/hare-projects) and will be putting
-any of my Hare-related adventures in here.
+[hare-test](https://git.sr.ht/~cmc/hare-projects) and will be putting any of my
+Hare-related adventures in here.
-> **Update:\*** I also created a simple Hare program for creating a file
-> from user input:
+> **Update:** I also created a simple Hare program for creating a file from user
+> input:
> [files.ha](https://git.sr.ht/~cmc/hare-projects/tree/main/item/files/files.ha)
-Luckily, Hare doesn\'t require any complex set-up tools or build
-environment. Once you have Hare installed, you simply need to create a
-file ending with `.ha` and you can run a Hare program.
+Luckily, Hare doesn't require any complex set-up tools or build environment.
+Once you have Hare installed, you simply need to create a file ending with `.ha`
+and you can run a Hare program.
-I created a file called `rgb.ha` in order to test out the
-random number generation and passing parameters between functions.
+I created a file called `rgb.ha` in order to test out the random number
+generation and passing parameters between functions.
```sh
nano rgb.ha
```
-Within this file, I was able to easily import a few of the [standard
-library modules](https://harelang.org/tutorials/stdlib/):
-`fmt`, `math::random`, and `datetime`.
+Within this file, I was able to easily import a few of the [standard library
+modules](https://harelang.org/tutorials/stdlib/): `fmt`, `math::random`, and
+`datetime`.
With these modules, I created two functions:
-1. `main`: This function calls the `generate_rgb`
- function and then prints out the returned values.
-2. `generate_rgb`: This function uses the current Unix epoch
- time to generate a pseudo-random value and uses this value to create
- three more random values between 0 and 255. These three numbers
- represent a color in RGB format.
+1. `main`: This function calls the `generate_rgb` function and then prints out
+ the returned values.
+2. `generate_rgb`: This function uses the current Unix epoch time to generate a
+ pseudo-random value and uses this value to create three more random values
+ between 0 and 255. These three numbers represent a color in RGB format.
-> **Note**: Some syntax coloring may look odd, as Zola currently
-> doesn\'t have a syntax highlighting theme for Hare. Instead, I\'m
-> using the C theme, which may not be exactly accurate when coloring the
-> code below.
+> **Note**: Some syntax coloring may look odd, as Zola currently doesn't have a
+> syntax highlighting theme for Hare. Instead, I'm using the C theme, which may
+> not be exactly accurate when coloring the code below.
```c
use datetime;
@@ -120,8 +113,7 @@ fn generate_rgb() []u64 = {
## Running a Program
-Once you have a Hare file written and ready to run, you simply need to
-run it:
+Once you have a Hare file written and ready to run, you simply need to run it:
```sh
hare run file.ha
@@ -136,37 +128,34 @@ hare build -o example file.ha
## Initial Thoughts
-1. Documentation Improvements Would Help
+1. Documentation Improvements Would Help
- While I was able to piece everything together eventually, the
- biggest downfall right now in Hare\'s documentation. For such a new
- project, the documentation is in a great spot. However, bare
- specifications don\'t help as much as a brief examples section
- would.
+ While I was able to piece everything together eventually, the biggest
+ downfall right now in Hare's documentation. For such a new project, the
+ documentation is in a great spot. However, bare specifications don't help
+ as much as a brief examples section would.
- For example, it took me a while to figure out what the
- `u64n` function was looking for. I could tell that it
- took two parameters and the second was my max value (255), but
- couldn\'t figure out what the first value should be. Eventually, I
- inspected the `random.ha` file in the [Hare source
+ For example, it took me a while to figure out what the `u64n` function was
+ looking for. I could tell that it took two parameters and the second was my
+ max value (255), but couldn't figure out what the first value should be.
+ Eventually, I inspected the `random.ha` file in the [Hare source
code](https://git.sr.ht/~sircmpwn/hare/tree/master/item/math/random/random.ha)
- and found the test suite that helped me discover that it needed an
- `init()` value in the form of `&var`.
+ and found the test suite that helped me discover that it needed an `init()`
+ value in the form of `&var`.
-2. More Basic Modules
+2. More Basic Modules
- This is another point that comes from Hare being new and awaiting
- more contributions, but there are some basic functions that I would
- personally enjoy seeing in Hare, such as one to convert decimal
- (base 10) values to hexadecimal (base 16).
+ This is another point that comes from Hare being new and awaiting more
+ contributions, but there are some basic functions that I would personally
+ enjoy seeing in Hare, such as one to convert decimal (base 10) values to
+ hexadecimal (base 16).
- If I\'m feeling comfortable with my math, I may work on the list of
- functions I want and see if any can make it into the Hare source
- code.
+ If I'm feeling comfortable with my math, I may work on the list of
+ functions I want and see if any can make it into the Hare source code.
-3. Overall Thoughts
+3. Overall Thoughts
- Overall, I actually really enjoy Hare. It\'s not as tedious to get a
- project up and running as Rust, but it\'s also simpler and more
- user-friendly than learning C. I am going to continue playing with
- it and see if I can make anything of particular value.
+ Overall, I actually really enjoy Hare. It's not as tedious to get a project
+ up and running as Rust, but it's also simpler and more user-friendly than
+ learning C. I am going to continue playing with it and see if I can make
+ anything of particular value.