Fo زبانی است که نامش از واژگان Functional Go گرفته شده که امکان Fuctional Programming یا به اختصار FP را به زبان Go افزوده است.
Go زبانی است که یکسری فیچر (قابلیت) مرتبط با برنامهنویسی فانکشنال را ساپورت میکند که از آن جمله میتوان به اصطلاحاً Closure و First-class Fuction اشاره کرد اما آنچه Fo به این زبان میافزاید، مقولهٔ جنریکها است به طوری که چنین قابلیتی این امکان را در اختیار دولوپرها میگذارد تا فانکشنهای به مراتب انعطافپذیری نوشته و دیتا استراکچرهای ایشان به اصطلاح Type-Agnostic باشد (این اصطلاح حاکی از آن است که دیتاتایپها عمومیت پیدا کرده و در موقعیتهای مختلفی به سادگی قابلاستفاده خواهند بود.)
Fo اصطلاحاً یک Proof of Concept است. به عبارتی، دولوپرهای این زبان فقط خواستهاند تا به اثبات این موضوع بپردازند که به چه شکل میتوان قابلیتهای زبان قدرتمندی همچون Go را توسعه داد. به عنوان نمونه سورسکد نوشته شده با زبان Fo داریم:
package main
import "fmt"
func main() {
// Create a new list and put some numbers in it.
l := New[int]()
e4 := l.PushBack(4)
e1 := l.PushFront(1)
l.InsertBefore(3, e4)
l.InsertAfter(2, e1)
// Iterate through list and print its contents.
for e := l.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
}
همچنین اگر علاقمند به تست زبان Fo به صورت آنلاین هستید، با مراجعه به Fo Playground میتوانید از کامپایلر آنلاین این زبان استفاده نمایید.