Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
def inTheForest(duck: { def quack; def feathers }) = {
duck.quack
duck.feathers
}
let inline getLen arg =
(^a : (member Count: int) arg)
let ra = ResizeArray<string>()
let rl = Dictionary<string, string>()
printfn "%i" (getLen ra)
printfn "%i" (getLen rl)
let inline getLen arg =
(^a : (member Count: int) arg)
let ra = ResizeArray<string>()
let rl = Dictionary<string, string>()
printfn "%i" (getLen ra)
printfn "%i" (getLen rl)
(^a : (member Count: int) arg) стоит arg? Мне не совсем ясна семантика. До него все понятно, это как в scala, тип ^a, у которого есть свойство Count типа int, но вот зачем тут arg? Заранее вам благодарен.^a : (member Count: int)
let pop stk =
match stk with
|[] -> (None, [])
|hd :: tail -> (Some(hd), tail)
let (res, rest) = pop stk
import Data.Sequence
type Deq = Seq
pushDBegin :: Deq a -> a -> Deq a
pushDBegin deq el = el <| deq
pushDEnd deq el = deq |> el
popDBegin :: Deq a -> (Maybe a, Deq a)
popDBegin = hd . viewr
where
hd EmptyR = (Nothing, empty)
hd (tl :> a) = (Just a, tl)
popDEnd = hd . viewl
where
hd EmptyL = (Nothing, empty)
hd (a :< tl) = (Just a, tl)
type Que = Seq
pushQ :: Que a -> a -> Que a
pushQ = pushDEnd
popQ :: Que a -> (Maybe a, Que a)
popQ = popDBegin
Реализация стека, очереди и дека на языке F# в функциональном стиле