newtype-ts
F#
newtype-ts | F# | |
---|---|---|
12 | 26 | |
570 | 2,199 | |
- | - | |
0.0 | 0.0 | |
almost 2 years ago | over 1 year ago | |
TypeScript | F# | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
newtype-ts
-
Type-Safe Printf() in TypeScript
Curious what your issue was with duck-typing. Were you effectively looking to create ADTs that are required to go through a specific step-by-step process, not simply 'look like' the thing that was expected?
If so, you might be interested in [newtype-ts].
[newtype-ts]: https://github.com/gcanti/newtype-ts
-
Is there a language with custom type support (value objects)?
this one https://github.com/gcanti/newtype-ts ?
-
I too prefer no classes
You don't need classes for nominal types: https://github.com/gcanti/newtype-ts
-
When do you find Branding to be useful?
Creating newtypes (via newtype-ts) for fractions and percentages is worthwhile if you're very concerned about correctness, though it's unfortunate that absent typeclasses they're not terribly ergonomic.
-
Please put units in names
I haven't used this library in particular or this one, but bless the authors and all the others for trying to make it happen… the project I'm now leading uses strongly typed strings for different component addresses, and it saves me to constantly look up the documentation what the functions need – it's beautiful.
-
Type that's NOT another type?
A "nominal" solution with no runtime overhead can be provided by branded types, other words for this are "opaque types" or "newtypes". Some libraries like newtype-ts exist to help with the construction of these. That library README describes it as:
-
Is there a way to guarantee that a number variable can never be a non-finite value?
You can also look at the fp-ts ecosystem for inspiration. newtype-ts and io-ts's Branded type with io-ts-type's UUID as a good example
-
Branding & Flavoring
Alternatively we can use other more sophisticated techniques to achieve nominal typing or libraries such as: newtype-ts or io-ts.
-
Introduction
One using fp-ts and newtype-ts
-
Using fp-ts and newtype-ts: types
We are going to use newtype-ts to build a branded type:
F#
-
old languages compilers
F# F*
-
From Script to Scaffold in F#
This year I've been attempting Advent of Code in my favourite programming language, F#. This is a beginner(ish) centered post about making incremental changes from the smallest possible solution to something more robust.
-
for newbie , VScode+ionide or VisualStudio
I can recommend polyglot notebooks in vs code, so you can mix different languages.Take a look athttps://fsharp.org/ for some project ideas and frameworks.
-
The comeback of the Fediverse and the Old Web
I have many less followers on Mastodon than in the Birdsite (40 vs 341), yet my activity has generated many more interactions than there. Not only that, among the users who decided to interact with me I counted: a co-discoverer of the Laniakea supercluster, one of the lead developers behind F#, the author of many important books on Java & JVM, plus many others. I'm literally a nobody, but this time there was no algorithm relying on relevance and engament metrics to decide what to present to each one of us.
-
Chicago and London TDD Styles for Functional Programming
FP devs differ based on language here. Elm, like F#, tends to encourage "a bunch of functions and types in a file". While Elm supports modules, we don't really care where it came from; they're all pure, all deterministic, the compiler tells us if it works.
-
Performance of immutable collections in .NET
The builtin fsharp collections actually are just "immutable", not persistent as you mention. (Ref: https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/map.fs. This is just an AVL tree that returns a copy on mutations: https://github.com/fsharp/fsharp/blob/577d06b9ec7192a6adafefd09ade0ed10b13897d/src/fsharp/FSharp.Core/map.fs#L118)
-
Coming from Scala
You can dive into .NET ecosystem by trying F#. It's functional-first language so this should be familiar.
-
Parsing Lambda Error Logs in ReScript & Python
ReScript code is just like F# or OCAML; it doesn’t have a function parse phase like JavaScript, so we have to define our functions and types first before we can use them. That’s fine, but makes explaining the code backwards (meaning you start at the bottom of the file and work your way up), so we’ll start at our lambda handler and explain each part, regardless of where it’s defined.
-
Please put units in names
F# is a JavaScript and .NET language for web, cloud, data-science, apps and more.
-
E
Also a programming joke
What are some alternatives?
io-ts - Runtime type system for IO decoding/encoding
ClojureCLR - A port of Clojure to the CLR, part of the Clojure project
type-fest - A collection of essential TypeScript types
Roslyn - The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.
fantasy-land - Specification for interoperability of common algebraic structures in JavaScript
julia - The Julia Programming Language
io-ts-types - A collection of codecs and combinators for use with io-ts
VisualFSharp - The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio
fp-ts - Functional programming in TypeScript
Nemerle - Nemerle language. Main repository.
Squants - The Scala API for Quantities, Units of Measure and Dimensional Analysis
IronScheme - IronScheme