Some competitive programming websites allow using some commonly used helper libraries. With languages that have a very rich standard library, like Clojure or to some extent Go, there is less use in allowing the use of such, but Typescript’s standard library is way smaller. I wonder what are your thoughts on adding support for some of such libraries. In my opinion they could just allow for an alternative, more declarative approach to solving problems and given their popularity, learning them can be a valuable extension of the learning experience for people looking for ways to gain proficiency beyond the standard library of a language.
But I’m simultaneously aware of the potentially higher operational cost they could incur, supply chain attack vulnerabilities and a perceived unfair advantage, as well as the risk that they could discourage exploration of other programming languages (like lisps) since you have more ways to do a thing in something already familiar.
As Typescript is a superset of Javascript, how much of the Javascript core functionality has been removed? Is there a specific exercise you are looking at where an external library would make sense, or where it is much too difficult to provide whatever functionality is needed to solve the exercise?
Is there something specific you are thinking about?
Exercism is mostly and mainly about fluency in a language, rather than fluency in plugins or extensions of the language, and so far has stayed true to that.
That said, there is nothing in the exercises that I have seen that have disallowed a student from writing the “extensions” they want to solve the exercises, and that has learning and practice value. Indeed, some exercises even state “do not use built in whatever to solve this problem”.
As far as I’m aware, all Javascript functionality is supported by Typescript, and you can probably solve all Typescript exercises by just modifying an existing, working Javascript solution so there should be no need to use an external library for most things, as the exercises on these tracks (and other tracks too) are largely designed to showcase language features and core concepts.
At the same time, I don’t think there is an explicit check for external libraries in most exercises, so you can use one if you wanted to, in case you’re working in a local environment, that would be the easiest.
@mjholub do you have a specific exercise in mind or a specific functionality that you’re struggling with?
Since the test runner does not have access to the internet, I think the concern is that using an external library will cause the platform’s test run to fail, for reasons that it is not available.
So locally, the tests may pass, but you would get an indication of failing on the site.
In practice, i’ve seen such solutions not once, so it’s not a restriction, just a consideration that people have to have. If it passes the tests locally, it doesn’t necessarily mean it’ll pass online.
This is the way the infrastructure is so there’s not much you can do about it, as I understand.