Поясняю за 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 |