Proposed Factor track

https://exercism.org/docs/tracks/factor/tests has eleven sentences before students see how to run the test suite. It should be surfaced further to the top before the details about unit testing in general with Factor.

Also the test docs assumes a good bit of knowledge. I’m just working with hello-world locally so most of that preamble is currently lost on me. It’s unclear what vocab-name means here since that’s not a common Exercism phrase. I’d probably lose the bit about test suites needing to be created by hand. That’s not relevant and it implies students can edit the Exercism-provided tests but the online test runner won’t use those tests. It might be useful to show an example of the output when a test fails. I do that on the Arturo track.

https://exercism.org/docs/tracks/factor/learning has the links repeated under some or not all of the resources. Some resources don’t have a hyperlink in the text but later at the bottom so things could be made a bit more consistent on both issues.

1 Like

I have updated the Factor track learning and tests docs.

cc @booniepepper

1 Like

Hello - a few observations from the foothills. I’ve gone through the first two concept exercises.

Testing

I had some difficulties getting the tests to work through the listener after USE ing the vocab (i.e. USE: lasagna after adding the path to the vocab paths). I’d have expected "lasagna" test to run the tests, but because of the structure of vocabs you also have to USE: exercism-tools before they’ll start running.

I then noticed (after looking at the tests) that the recommended way to get them running was through the command line. My take here would be that it would be more in keeping with Factors tooling and docs to show how to load + use the vocab for the exercise into the Factor listener (and how to hook it into the default editor) rather than do it through the CLI.

Stack Manipulation

I’ve done both lasagna and annaylns-infiltration as I’ve assumed that they’re the recommended path (from the config.json). In both I’ve had to do some stack manipulation to get to the answers. Nothing excessive, but drop, swap, spin etc. This could just be me, of course.

But if it’s not just me, then could I suggest that either, as a prerequisite, we have a lesson around basic stack manipulation? Something like having inputs in order x y z and getting out z z y? Just five or six words which would get students used to fiddling with the stack?

Or, as an alternative, could the initial exercises be rewritten so that the initial order of the stack would be more conducive to a solution with no manipulation? i.e. total-working-time ( current-time layers -- minutes )?

This might just be me not being good enough to answer these two without stack manipulation, so do double check.

I think that’s what the lasagna exercise is meant to be. It’s tied to the basics concept.

I think that’s what the lasagna exercise is meant to be. It’s tied to the basics concept.

Gotcha. Then I’d say it either needs to be made a little bit harder to exercise more stack manipulation (at the moment you only need swap) or have a separate stack manipulation exercise to play with some of the other more usual ones (from the docs)

New stack manipulation exercise added. Students will see it after hello-world and before lasagna. Downloading the exercise will create a directory like

~/exercism/factor/cargo-shuffle

A student who has built the exercism cli from source will be able to run the exercise tests using a command like exercism test

1 Like

Do we need a new CLI release?

Yes please, for

  • factor
  • free-pascal
  • lean
  • moonscript
  • odin

ReScript is getting close to launch as well. We’re waiting for the test runner image to be hooked up and then getting maintainer review. If we’re cutting a CLI release in the near future, it’d be worthwhile to pull in ReScript at the time.

Releasing shouldn’t (in theory) take too long. We can hold off on a release until Factor and ReScript have the other bits lined up then cut a release which includes both.

1 Like

It is true that I exclusively focused on the online test runner and the CLI.

Do you have a preferred listener workflow that works well in a context like ~/exercism/factor/cargo-shuffle ? On failure, we need to show the student the expected and actual stack contents. Instructions would need to be usable on Linux/Mac/Windows, or specify which platform(s) they apply to.

2 Likes

Let me have a little think and I’ll get back to you.

coordinate-choreography affine-2d completely stumped me. I wasn’t sure how to start or tackle that one.

I noticed a lot of @keiraville 's solutions use :: which I don’t recall seeing covered in the syllabus as far as I got.

Should the Hints for affine-2d be rewritten?

:: is taught in the Locals concept, in Lasagna Luminary. I learned it earlier by reading Andrea Ferretti’s Factor tutorial, the first link in How to learn Factor.

I believe the example/exemplar solutions do not use anything not yet taught, my solutions sometimes do.

We could make Locals reachable without completing Curry, Compose, and Fry first.

1 Like

Hah. I’m solving locally and didn’t think to even look at the hints file. I’ll give that a look. I managed the rest without it so far.

The affine-2d task was too difficult. Now removed.

I’ll keep the current concept order, where locals are taught later.

The test runner is online and all exercises have at least one community solution.

I think we can launch next week.

cc @booniepepper

2 Likes

In the first concept, I got in doubt about how words got composed together. If I could just write, e.g., dup over and, if so, if this would be a composition to the left or to the right.

I think just a line with an example ought to be enough to make things clearer.

1 Like

In the first concept we picture a stack of cargo crates on a quay, newest on top.

We now mention left to right with an example: How words compose

1 Like

Went up to the quotations concept. Very fun language!

Only error I could find until now is that replace is mentioned as part of sequences, but it is actually in splitting. This is in both strings and quotations.

One suggestion: the cars-assemble exercise is associated with the conditionals concept, but it has only one task actually requiring a conditional, the first one. Since this first task has a switch-like structure that matches cond, there could be a previous task with a simpler conditional so students can practice if, when or unless.

I’ll keep testing the track tomorrow.

3 Likes