fo
fo copied to clipboard
An experimental language which adds functional programming features to Go.
Hello the following program fails to compile https://play.folang.org/p/2XxLi_ukWR5 ``` package main func x[T](p *T)(**T){ return &p } func y[T](a *T){ x[*T](x[T](a)) } func main() { } ```
IMO it would be easier to read code which uses < and > instead of [ and ]. Have you considered it during the design? What is the reason behind...
Given main.fo: ``` package main type Foo[T] struct{ Field []Foo[[]T] } func main(){ } ``` The generated go is: ``` package main type Foo____T struct { Field []Foo______T } func...
Hi! I was wondering what your thoughts were on supporting type constraints so that one could require that a type T must implement a certain interface. For example ([playground](https://play.folang.org/p/QGVXlJCIgIa)): ```...
Hello. Manually implementing and passing a concrete struct as a generic struct function parameter does not work. This does not work: ``` package main import "fmt" type StringBox struct {...
Please, mention this project in the issue of the Go project dedicated to generic programming facilities: golang/go#15292. This mention will has attracted attention to your experiment and will has started...
I would be great to have this project referred to in the compilation at: https://github.com/golang/go/wiki/ExperienceReports#generics There is also the list of ideas and approaches at the below link which could...
[libgeneration](https://github.com/go-li/libgeneration) contains several generic algorithms and datastructures - sorted map (dict/avl) - binary tree (dict/binary) - graph (graphs and algorithms) - binary heap (a queue) - efficient tree based heap...
Currently, the Fo CLI only works on one file at a time. This is fine for developing a proof of concept and polishing core language features, but in order for...
Hello, the following does not run https://play.folang.org/p/XhaheZsrxBT ``` package main func instantiate[T](p *T) { var foo = make(map[T]int) foo[*p] = 9 } func main() { instantiate[[0]byte]((*[0]byte)(nil)) } ``` The expected...