看起来改变画布的尺寸会清除已在该画布上完成的任何绘图.
是否有一个在画布上触发的事件调整大小,所以我可以挂钩它并在它发生时重绘?
鉴于类型
data Prisoner = P { _name :: String
, _rank :: Int
, _cereal :: Cereal }
data Cereal = C { _number :: Int
, _percentDailyValue :: Map String Float
, _mascot :: String }
Run Code Online (Sandbox Code Playgroud)
我可以通过模式匹配来提取某人的姓名,等级和谷物数量:
getNameRankAndCerealNumber_0 :: Prisoner -> (String, Int, Int)
getNameRankAndCerealNumber_0 (P { _name=name
, _rank=rank
, _cereal = C { _number=cerealNumber }}
) = (name, rank, cerealNumber)
Run Code Online (Sandbox Code Playgroud)
或者,我可以使用镜头分别提取每个部分
makeLenses ''Cereal
makeLenses ''Prisoner
getNameRankAndCerealNumber_1 :: Prisoner -> (String, Int, Int)
getNameRankAndCerealNumber_1 p = (p ^. …Run Code Online (Sandbox Code Playgroud) 是否可以使用SVG动画d属性<path>?
我可以画一个钻石和一个圆圈作为由八条贝塞尔曲线组成的路径:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
jQuery(function($){
var a = 50;
var draw = function(b, c, d, e, f){
return [
'M', a, 0,
'C', b, c, ',', d, e, ',', f, f,
'C', e, d, ',', c, b, ',', 0, a,
'C', -c, b, ',', -e, d, ',', -f, f,
'C', -d, e, ',', -b, c, ',', -a, 0,
'C', -b, -c, ',', -d, -e, ',', -f, -f,
'C', -e, -d, ',', -c, -b, …Run Code Online (Sandbox Code Playgroud) 是否可以在DOM元素上设置自定义属性,并依赖它们持久化?
例如,给定
<html><body><div id="foo"></div></body></html>
Run Code Online (Sandbox Code Playgroud)
这样做是否公平document.getElementById('foo').bar = "baz";,并期望document.getElementsByTagName('div')[0].bar相等"baz"?
请注意,我在这里谈论的是属性,就像普通的javascript对象属性一样,而不是元素属性.
我对它是如何跨浏览器感兴趣,以及它是否支持任何规范.
DOM API是否保证每次都会为同一个DOM元素返回相同的javascript对象?
我正在尝试使用knockout.js来填充和管理一个<select/>盒子.我希望初始值为空.
但是,我无法在任何时候强制将托管值强制为null,更不用说最初了.
例如,考虑这个小提琴:
HTML:
<select data-bind="options: myOptions, value: myValue"></select> aka
<span data-bind="text: myValue"></span>
<div>
<button data-bind="click: setMyValue(null)">clear the selection</button>
<button data-bind="click: setMyValue('one')">select "one"</button>
<button data-bind="click: setMyValue('four')">select "four"</button>
</div>
<ul data-bind="foreach: log">
<li>message: <span data-bind="text: message"></span></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
JS:
function Model() {
var self = this;
self.myOptions = ['one', 'two', 'three', 'four'];
self.myValue = ko.observable();
self.setMyValue = function (val) {
return function(){
this.log.push({
message: "ok, trying to set value as " + val
});
self.myValue(val);
};
};
self.log …Run Code Online (Sandbox Code Playgroud) 我写了一些玩具代码来玩Arrows的概念.我想看看我是否可以编写一个编码有状态函数概念的箭头 - 在不同的调用之后给出不同的值.
{-# LANGUAGE Arrows#-}
module StatefulFunc where
import Control.Category
import Control.Arrow
newtype StatefulFunc a b = SF { unSF :: a -> (StatefulFunc a b, b) }
idSF :: StatefulFunc a a
idSF = SF $ \a -> (idSF, a)
dotSF :: StatefulFunc b c -> StatefulFunc a b -> StatefulFunc a c
dotSF f g = SF $ \a ->
let (g', b) = unSF g a
(f', c) = unSF f b
in (dotSF f' g', …Run Code Online (Sandbox Code Playgroud) 所以,为了好玩,我一直在使用Peano数字和智能构造函数在Haskell中使用CountedList类型.
类型安全head,tail对我来说真的很酷.
我想我已达到了解我该怎么做的极限
{-# LANGUAGE EmptyDataDecls #-}
module CountedList (
Zero, Succ, CountedList,
toList, ofList,
empty, cons, uncons,
head, tail,
fmap, map, foldl, foldr, filter
) where
import qualified List (foldr, foldl, filter)
import Prelude hiding (map, head, foldl, foldr, tail, filter)
data Zero
data Succ n
data CountedList n a = CL [a]
toList :: CountedList n a -> [a]
toList (CL as) = as
ofList :: [a] -> CountedList n a
ofList …Run Code Online (Sandbox Code Playgroud) 在阅读了关于在Haskell中编写多变量函数的这篇文章后,我试着写一些自己的函数.
起初我以为我会尝试概括它 - 所以我可以通过折叠参数给出一个返回可变参数函数的函数.
{-# OPTIONS -fglasgow-exts #-}
module Collapse where
class Collapse a r | r -> a where
collapse :: (a -> a -> a) -> a -> r
instance Collapse a a where
collapse _ = id
instance (Collapse a r) => Collapse a (a -> r) where
collapse f a a' = collapse f (f a a')
Run Code Online (Sandbox Code Playgroud)
但是,编译器不喜欢这样:
Collapse.hs:5:9:
Functional dependencies conflict between instance declarations:
instance Collapse a a -- Defined at …Run Code Online (Sandbox Code Playgroud) 所以几年前我花了一些时间来讨价还价make,这得到了很大的回报.编写用于构建项目和自动执行任务的小makefile非常有趣且富有成效.
当然,缺点是我的makefile非常具体,特别是涉及平台和库位置时.
所以这就是人们告诉我"autotools to rescue!"的地方.当其他人这样做时,他们似乎肯定会做这个伎俩(我喜欢下载东西,跑步configure && make && sudo make install和观看它只是工作),但我无法绕过他们.
我看过一些configure.ac和Makefile.am文件,我只是不明白发生了什么.我不知道标识符的哪一部分是开发人员的选择,哪些部分对autotools有意义.我不确定我是否理解整个流程和重点Makefile.in.我想我只是打了一个从我习惯的系统(make)到达上面一层或两层的精神墙.
任何人都可以指向一个教程或书籍(最好不是一个过于干燥的),可以教我autotools的快乐吗?什么步骤,以及如何使用它们,我怎么能写我自己的configure.ac,并Makefile.am从头开始?告诉我如何有效并与他们玩得开心?
我有一个279MB的文件,包含大约1000万个键/值对,大约有500,000个唯一键.它按键分组(每个键只需要写一次),因此给定键的所有值都在一起.
我想要做的是转换关联,创建一个文件,其中对按值分组,给定值的所有键都存储在一起.
目前,我正在使用Parsec作为元组列表读取对(K,[V])(使用惰性IO,因此我可以在Parsec处理输入文件时将其作为流处理),其中:
newtype K = K Text deriving (Show, Eq, Ord, Hashable)
newtype V = V Text deriving (Show, Eq, Ord, Hashable)
tupleParser :: Parser (K,[V])
tupleParser = ...
data ErrList e a = Cons a (ErrList e a) | End | Err e
parseAllFromFile :: Parser a -> FilePath-> IO (ErrList ParseError a)
parseAllFromFile parser inputFile = do
contents <- readFile inputFile
let Right initialState = parse getParserState inputFile contents
return $ loop initialState
where loop …Run Code Online (Sandbox Code Playgroud) haskell ×5
javascript ×4
animation ×1
arrows ×1
autotools ×1
bezier ×1
canvas ×1
dom ×1
haskell-lens ×1
html5 ×1
knockout.js ×1
list ×1
makefile ×1
memory ×1
parsec ×1
polymorphism ×1
polyvariadic ×1
svg ×1