Comments (2)
The problem is that your term is ill-typed, but Formality wasn't raising an error. You can't use <>
in computational positions, you need to either use dup
, or use boxed definitions (#main
), which causes the compiler to auto-fill the dups for you. I've fixed it now, so your program won't type-check anymore. It can be fixed by boxing main
:
import Base@0
#create_step_list*N : ! {step : Word, limit : Word, acc : Word} -> List(Word)
if acc .< limit:
cons(~Word, acc, create_step_list(step, limit, acc + step))
else:
nil(~Word)
halt: nil(~Word)
#main : !Word
let list3 = <create_step_list*>(3, 1000, 3)
let list5 = <create_step_list*>(5, 1000, 5)
let list15 = <create_step_list*>(15, 1000, 15)
let concatenated_list = <concat*>(~Word, list3, list5)
let concatenated_sum = <sum*>(concatenated_list)
let duplicate_sum = <sum*>(list15)
concatenated_sum - duplicate_sum
Or by explicitly using dup
:
import Base@0
#create_step_list*N : ! {step : Word, limit : Word, acc : Word} -> List(Word)
if acc .< limit:
cons(~Word, acc, create_step_list(step, limit, acc + step))
else:
nil(~Word)
halt: nil(~Word)
main : !Word
dup create = (create_step_list*)
dup concat = (concat*)
dup sum = (sum*)
# let list3 = create(3, 1000, 3)
let list5 = create(5, 1000, 5)
let list15 = create(15, 1000, 15)
let concatenated_list = concat(~Word, list3, list5)
let concatenated_sum = sum(concatenated_list)
let duplicate_sum = sum(list15)
concatenated_sum - duplicate_sum
Thank you very much for the report!
from kind.
I still don't get an error with version 0.3.125
Instead the wrong values still get computed.
> fm --version
0.3.125
> fm main/main
233168
> fm main/main -o
4294967284
{"rewrites":12,"loops":26,"max_len":21}
> cat main.fm
import Base@0
#create_step_list*N : ! {step : Word, limit : Word, acc : Word} -> List(Word)
if acc .< limit:
cons(~Word, acc, create_step_list(step, limit, acc + step))
else:
nil(~Word)
halt: nil(~Word)
main : Word
let list3 = <create_step_list*>(3, 1000, 3)
let list5 = <create_step_list*>(5, 1000, 5)
let list15 = <create_step_list*>(15, 1000, 15)
let concatenated_list = <concat*>(~Word, list3, list5)
let concatenated_sum = <sum*>(concatenated_list)
let duplicate_sum = <sum*>(list15)
concatenated_sum - duplicate_sum
Both of your versions work for -o, but get an oom error with -O.
Did i overlook something?
edit:
Yeah, i overlooked something:
I didn't type-check it.
from kind.
Related Issues (20)
- Bump cli version to 0.3.8
- Bump cli version to 0.3.9
- "New Type" Optimization
- Improve error messages by removing things like implicit arguments
- Add type checker for erased Pi, App and Lam
- Remove old parser and stuff to use treesitter
- Add new type of error messages used for LLMs.
- error[E0599]: no method named `as_ptr` found for struct `AtomicU64` in the current scope HOT 2
- Add an API for cursor on trees
- Add slash on the end of identifiers as another type of "use"
- Add flag to remove dependency errors
- New panic hook for the language.
- Add flag to show immediate dependencies
- Inconsistency in type check messages
- Update basic function names for Kindex update HOT 1
- Create a project/package manager
- Refactor file loading and name resolution module
- Compiler crashes when using an undeclared alias
- Inconsistent arity error
- WebAssembly
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kind.