Proposed Factor track

Factor is a concatenative, stack-based programming language with many features.

There is an existing track repo without recent activity, a closed logo issue, and no test runner repo. I couldn’t find any discussion in this forum.

I have experimented over the past day or two with building a new track repo and test runner for Factor, starting from the generic repos, making use of an LLM, a generator, various existing tracks, and the original track repo.

Some of the initial example solutions are poorly structured and will be replaced. Others are beautiful.

The alphametics solution attempt is currently broken.

4 Likes

Exciting. I looked at Factor briefly before I went from Red to Arturo, but it looked promising at the time.

That sounds lovely. I take it you would like to become a member of the Factor team? :slight_smile:

Yes, and can we please have a test runner repo.

Both are done!

2 Likes

I have merged the test runner and would like to use it for track CI.

Is it too early to request a forum label? We also need forum labels for launched tracks

  • euphoria
  • free-pascal
  • idris

Done.

The Docker part is done. The AWS part is for Jeremy to handle.

2 Likes

@iHiD The factor test runner is ready for deployment so other maintainers can test the track.

4 Likes

@keiraville - I’ve just been looking at Factor myself, I’d like to help out with the track if you’d like/need a hand.

1 Like

To get the ball rolling on maintainer feedback, I’ll take a look this weekend at the track docs in GitHub and work locally with the Docker test runner image.

This is a trippy language :slight_smile:
That’s a lot of syllabus for a launch!

1 Like

Yeah, some of the Arturo Discord server regulars are very eager for this to launch. :slight_smile:

  • The syllabus introduces between? in currency-exchange but I didn’t want it until cars-assemble (though I could have used <=). Would it make sense to shift it?
  • Strings Concept mentions “sequences vocabulary” but that’s not a link. Should it be a link?
1 Like

Feedback is especially welcome on the concept exercises. The root config.json lists them in intended order for students. I asked an LLM to port these from other tracks, or to generate new concept exercises.

I am the track’s Student Zero, being new to Factor myself. Maintainers can see how many students have completed each exercise in Factor Track Management, and can see my solutions in Community Solutions.

No help needed with adding exercises.

1 Like

I’ve been using an LLM to help me write concepts and concept exercises for the x86-64 track over the last few weeks. It’s been a bit hit and miss.

I think it produces excellent drafts and is usually responsive to feedback. But I’ve spotted some errors here and there, and there’s sometimes too much or too little emphasis on a particular topic.

Right now I prefer to ask for a draft, change it freely, and then iterate on the text I’ve written.

Two things it does very well are producing test cases for concept exercises, and revising grammar.

I’ll check the Factor track this weekend. I’ve always been curious about stack languages!

  • The syllabus docs mention multiple vocabularies then multiple words in those vocabularies. It might be worth making it explicit which vocabularies include which words
  • The strings pages uses .s in the split examples but .s is never defined/explained.
  • “stack- shuffling” has a space in the intro but not in the about.
  • boardwalk-games mentions “A word that wraps with-random should be marked inline so the quotation’s result can flow back to the caller.” It fails to mention what it means to “mark” a word. That sentence is pretty vague and cryptic, making the last task here quite challenging to solve without already knowing the solution.
  • The test_code output from boardwalk-games looks truncated.
» jq '.tests[].test_code' ~/ws/factor/$f/results.json
"{ 6 } [ 4 <mersenne-twister> [ 6 roll-die ] with-random ] unit-test"
"{ 2 } [ 5 <mersenne-twister> [ 6 roll-die ] with-random ] unit-test"
"] unit-test"
"] unit-test"
"] unit-test"
"] unit-test"
"] unit-test"
"] unit-test"
"] unit-test"
"] unit-test"
"] unit-test"
"{ 6 } [ 4 [ 6 roll-die ] play-seeded ] unit-test"
"] unit-test"
1 Like

Stack language are lots of fun IMHO!

3 Likes

Is there a way I can opt in to the incubating track in the web ui to try it out so I can give feedback?

No, currently the track is only visible to maintainers in the web ui.

no worries, I’ve hacked things together locally