那么,是否可以将CSS转换设置为使用速度而不是持续时间?
现在,如果我想要一个将元素从另一个元素的左侧移动到另一个元素的类,速度会发生很大变化.
如果我有短元素并且我想从左到右移动子元素并且持续时间设置为例如1秒,则它移动得非常慢.
另一方面,如果我有一个具有相同类的非常长的元素,则子元素以令人难以置信的速度闪烁以满足1秒的时间限制.
这真的伤害了我的css模块性,所以我想知道在这种情况下是否有办法使转换保持一致.
例如,我有一个类型类:
class MyClass a b c where
fun01 :: a -> b
fun02 :: a -> c
fun03 :: a -> b -> c -> ()
fun04 :: a -> WhatEver
Run Code Online (Sandbox Code Playgroud)
我想为我提供一个默认实现,让我们调用它BaseDataType来定义fun03自我和fun01和的实现fun02.然后我会有这样的事情:
class MyClass BaseDataType b c where
fun03 = fun01 <$> fun02 ...
fun04 = fun02 ...
Run Code Online (Sandbox Code Playgroud)
而不是完成我的类实例并避免所有的样板代码fun03,fun04我只是提供fun01并fun02喜欢这样:
instance MyClass BaseDataType Int Char where
fun01 = 1
fun02 = 'C'
Run Code Online (Sandbox Code Playgroud)
是否可能有一些语言扩展允许这种行为?我在这个主题上找不到任何东西.
所以,我现在正在学习Haskell,我想确认或揭穿我对monoid的理解.
我从阅读CIS194课程中发现的是,monoid基本上是用于在自定义集上定义自定义二进制操作的"API".
比我去告诉自己更多,我偶然发现了大量非常令人困惑的教程,试图澄清这个问题,所以我不再那么肯定了.
我有不错的数学背景,但我对所有的比喻感到困惑,我正在寻找对我对monoid的理解的明确是/否答案.
我发现我可以做到这一点1 :: Product Int并得到Product {getProduct = 1}结果.
Product是一个newtype定义的Data.Monoid.比我尝试定义自己的newtype那样:
newtype Stuff a = Stuff {getStuff :: a} deriving (Show)
Run Code Online (Sandbox Code Playgroud)
但如果我尝试这样做,1 :: Stuff Int我会收到一个错误:
<interactive>:20:1: error:
* No instance for (Num (Stuff Int)) arising from the literal `1'
* In the expression: 1 :: Stuff Int
In an equation for `it': it = 1 :: Stuff Int
Run Code Online (Sandbox Code Playgroud)
我是否必须施加Num约束a或什么?为什么这不起作用?
在Microsoft SQL服务器中,我可以这样做:
create procedure my_procedure @argument1 int, @argument2 int
as
select *
from my_table
where ID > @argument1 and ID < @argument2
Run Code Online (Sandbox Code Playgroud)
这将返回我的所有列的表my_table.
我在postgresql中设法做的最近的事情是:
create or replace function
get_test()
returns setof record
as
$$ select * from my_table $$
language sql
Run Code Online (Sandbox Code Playgroud)
或者我可以定义我的表类型,但手动重新创建技术上已经存在的是非常不切实际的.
create or replace function
get_agent_summary()
returns table (
column1 type, column2 type, ...
)
as
$$
begin
return query select col1, col2, ... from my_existing_table;
...
Run Code Online (Sandbox Code Playgroud)
维持是痛苦的.
那么,如何在不重新定义我想要返回的表中的每一列的情况下轻松返回结果集?
我正在使用自定义monad(带阅读器)轻松地将数据库(如DB池)传递给我的处理程序(在使用自定义monad之前,我曾将连接作为fn参数传递).
这就是我定义自定义monad的方法:
newtype Controller a = Controller
{ runController :: ReaderT ServerEnvironment Handler a
} deriving ( Functor, Applicative, Monad, MonadReader ServerEnvironment,
MonadError ServantErr, MonadIO )
Run Code Online (Sandbox Code Playgroud)
这ServerEnvironment只是我用来携带数据的自定义数据类型.
问题是,对于我,AuthHandler我必须具体使用以下功能:
r -> Handler usr
Run Code Online (Sandbox Code Playgroud)
作为身份验证处理程序,我不能使用我的自定义处理程序,它将是:
r -> Controller usr
Run Code Online (Sandbox Code Playgroud)
而且我也无法传递我,ConnectionPool因为签名不能是:
ConnPool -> r -> Handler usr
Run Code Online (Sandbox Code Playgroud)
那么,如何在不使用全局IO状态的情况下将额外数据传递给servant中的身份验证处理程序?
我想获得与我的处理程序相对应的当前路线。这是我的服务器模型,仅供参考:
type ServerAPI =
"route01" :> Get '[HTML] Text
:<|> "route02" :> "subroute" :> Get '[HTML] Text
:<|> "route03" :> Get '[HTML] Text
Run Code Online (Sandbox Code Playgroud)
这里有一些处理程序:
route1and2Handler :: Handler Text
route1and2Handler = do
route <- getCurrentRoute
addVisitCountForRouteToDatabaseOrSomethingOfThatSort...
return template
route3Handler :: Handler Text
route3Handler = return "Hello, I'm route 03"
Run Code Online (Sandbox Code Playgroud)
还有我的服务器:
server :: Server ServerAPI
server = route1and2Handler :<|> route1and2Handler :<|> route3Handler
Run Code Online (Sandbox Code Playgroud)
所以,基本上我route1and2Handler应该有一些方法来获得当前路线。我已经尝试将请求对象放入我的处理程序并通过实现这样的HasServer实例从中提取 url :
data FullRequest
instance HasServer a => HasServer (FullRequest :> a) where
type Server …Run Code Online (Sandbox Code Playgroud) 我正在学习Haskell,我想让用户在控制台中输入x数字并将这些数字存储在数组中,这些数字可以传递给我的函数.
不幸的是无论我尝试什么它都不起作用,这是我的代码:
-- Int Array
intArray :: Int -> IO [Int]
intArray 0 = []
intArray x = do
str <- getLine
nextInt <- intArray (x - 1)
let int = read str :: Int
return int:nextInt
-- Main Function
main = do
array <- intArray 5
putStrLn (show array)
Run Code Online (Sandbox Code Playgroud) 所以,我想在我的服务器服务器上添加两个wai中间件.一个用于提供静态文件的中间件,另一个用于记录.
我有我的api defined(router),这就是我启动服务器的方式:
webServer :: IO ()
webServer = run 80 (middleware $ router)
Run Code Online (Sandbox Code Playgroud)
以下是我如何定义我的middleware:
middleware :: Application -> Application
middleware = do
logStdoutDev
staticPolicy $ addBase "static"
Run Code Online (Sandbox Code Playgroud)
现在,如果我把logStdoutDev第一个比我不能提供静态文件,但如果我放staticPolicy第一,我可以提供静态文件,但我失去了记录事件的能力(基本上他们被忽略).
问题是,如何wai在仆人中正确组合中间件.
haskell ×8
servant ×3
css ×1
database ×1
default ×1
html ×1
input ×1
middleware ×1
monoids ×1
newtype ×1
operators ×1
pool ×1
postgresql ×1
registration ×1
request ×1
resultset ×1
scotty ×1
sql-server ×1
transition ×1
typeclass ×1