Documentation
¶
Overview ¶
Package mostlyadequate is meant to serve as a go "companion" resource to Professor Frisby's Mostly Adequate Guide.
Example (Dasherize) ¶
fmt.Println(Dasherize("The world is a vampire"))
Output: the-world-is-a-vampire
Example (Flock) ¶
package main
import "fmt"
type Flock struct {
Seagulls int
}
func MakeFlock(n int) Flock {
return Flock{Seagulls: n}
}
func (f *Flock) Conjoin(other *Flock) *Flock {
f.Seagulls += other.Seagulls
return f
}
func (f *Flock) Breed(other *Flock) *Flock {
f.Seagulls = f.Seagulls * other.Seagulls
return f
}
func main() {
flockA := MakeFlock(4)
flockB := MakeFlock(2)
flockC := MakeFlock(0)
fmt.Println(flockA.Conjoin(&flockC).Breed(&flockB).Conjoin(flockA.Breed(&flockB)).Seagulls)
}
Output: 32
Example (GetAge) ¶
now, err := time.Parse(time.DateOnly, "2023-09-01")
if err != nil {
panic(err)
}
fmt.Println(GetAge(now)(MakeUser("2005-12-12")))
fmt.Println(GetAge(now)(MakeUser("July 4, 2001")))
fortune := F.Flow3(
N.Add(365.0),
S.Format[float64]("%0.0f"),
Concat("If you survive, you will be "),
)
zoltar := F.Flow3(
GetAge(now),
E.Map[error](fortune),
E.GetOrElse(errors.ToString),
)
fmt.Println(zoltar(MakeUser("2005-12-12")))
Output: Right[<nil>, float64](6472) Left[*time.ParseError, float64](parsing time "July 4, 2001" as "2006-01-02": cannot parse "July 4, 2001" as "2006") If you survive, you will be 6837
Example (Pipe) ¶
output := F.Pipe2( "send in the clowns", ToUpper, Exclaim, ) fmt.Println(output)
Output: SEND IN THE CLOWNS!
Example (Shout) ¶
fmt.Println(Shout("send in the clowns"))
Output: SEND IN THE CLOWNS!
Example (Street) ¶
package main
import (
"fmt"
A "github.com/IBM/fp-go/array"
F "github.com/IBM/fp-go/function"
O "github.com/IBM/fp-go/option"
)
type (
Street struct {
Name string
Number int
}
Address struct {
Street Street
Postcode string
}
AddressBook struct {
Addresses []Address
}
)
func getAddresses(ab AddressBook) []Address {
return ab.Addresses
}
func getStreet(s Address) Street {
return s.Street
}
var FirstAddressStreet = F.Flow3(
getAddresses,
A.Head[Address],
O.Map(getStreet),
)
func main() {
s := FirstAddressStreet(AddressBook{
Addresses: A.From(Address{Street: Street{Name: "Mulburry", Number: 8402}, Postcode: "WC2N"}),
})
fmt.Println(s)
}
Output: Some[mostlyadequate.Street]({Mulburry 8402})
Example (Widthdraw) ¶
fmt.Println(getTwenty(MakeAccount(200))) fmt.Println(getTwenty(MakeAccount(10)))
Output: Your balance is $180.00 You're broke!
Click to show internal directories.
Click to hide internal directories.