Поясняю за Mid по запросу @aleksei_t
Исходная мысль была такая. Итак у нас есть
trait MyBusinessModule[F[_]]{
def doBusinessThing(entity: Entity, info: Info): F[Value]
def undoBusinessThing(entity: Entity): F[Respect]
}Поясняю за Mid по запросу @aleksei_t
Исходная мысль была такая. Итак у нас есть
trait MyBusinessModule[F[_]]{
def doBusinessThing(entity: Entity, info: Info): F[Value]
def undoBusinessThing(entity: Entity): F[Respect]
}Надеюсь, что теперь эта специальная олимпиада затихнет, потому что код-победитель только на ~20% уступает простой записи нулей в /dev/null.
При ближайшем рассмотрении, задача оказалась на скорость вывода в stdout, т.е. так как вход у неё довольно маленький (~10K элементов), то парсить практически всё равно как -- на любом языке из использовавшихся.
После понимания этого, задача сводится к эффективной буферизации вывода и размышлениям, почему же нигде не работает стандартная буферизация --- по идее, она должна делать именно
Первоначально задача возникла в https://t.me/haskellru и формулировалась примерно так: почему следующий код на Haskell
Copyright © 2016-2018 Fantasyland Institute of Learning. All rights reserved.
A function is a mapping from one set, called a domain, to another set, called the codomain. A function associates every element in the domain with exactly one element in the codomain. In Scala, both domain and codomain are types.
val square : Int => Int = x => x * x| /* | |
| The Oracle Java enum Planets example using the Klang DIY Enum, modified to include ordering. | |
| */ | |
| object KlangEnumPlanets extends App { | |
| trait Enum { //DIY enum type | |
| import java.util.concurrent.atomic.AtomicReference //Concurrency paranoia | |
| type EnumVal <: Value //This is a type that needs to be found in the implementing class |
| import java.nio.charset.StandardCharsets._ | |
| import java.security._ | |
| import javax.crypto._ | |
| import javax.crypto.spec._ | |
| import base64.Encode.{ apply => toBase64 } | |
| import base64.Encode.{ urlSafe => toBase64UrlSafe } | |
| import base64.Decode.{ apply => fromBase64 } | |
| import base64.Decode.{ urlSafe => fromBase64UrlSafe } |
| import scala.slick.lifted.CanBeQueryCondition | |
| // optionally filter on a column with a supplied predicate | |
| case class MaybeFilter[X, Y](val query: scala.slick.lifted.Query[X, Y]) { | |
| def filter[T,R:CanBeQueryCondition](data: Option[T])(f: T => X => R) = { | |
| data.map(v => MaybeFilter(query.filter(f(v)))).getOrElse(this) | |
| } | |
| } | |
| // example use case | |
| import java.sql.Date |
| package core.dao | |
| import scala.concurrent.Future | |
| import play.api.Logger | |
| import reactivemongo.core.commands.LastError | |
| import reactivemongo.core.errors.DatabaseException | |
| import core.db.MongoHelper |
| Latency Comparison Numbers (~2012) | |
| ---------------------------------- | |
| L1 cache reference 0.5 ns | |
| Branch mispredict 5 ns | |
| L2 cache reference 7 ns 14x L1 cache | |
| Mutex lock/unlock 25 ns | |
| Main memory reference 100 ns 20x L2 cache, 200x L1 cache | |
| Compress 1K bytes with Zippy 3,000 ns 3 us | |
| Send 1K bytes over 1 Gbps network 10,000 ns 10 us | |
| Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD |