小编Dan*_*ton的帖子

有条件地为元素添加多个类

假设我有一些@stuff,我正在渲染一个表格,每个表格都有一些属性thing.我希望每隔一行的颜色不同,所以我使用的是典型的cycle技巧:

%table
  - @stuff.each do |thing|
  %tr{ class: cycle('even', 'odd') }
    %td thing.bleep
    %td thing.bloop
Run Code Online (Sandbox Code Playgroud)

但我还希望根据与每个特定相关的某些条件来不同地呈现某些行thing.所以我希望某些行foo类,如果thing.foo?是真的话.如果我不做这cycle件事,我会这样做:

%tr{ class: 'foo' if thing.foo? }
Run Code Online (Sandbox Code Playgroud)

有没有方便的方法来做这两件事?或者我是否真的必须亲自编写丑陋的逻辑来有条件地将这些东西与中间的空间连在一起?感觉就像那种繁琐的逻辑容易出错,而且我应该使用一个抽象来构成这两个CSS类的改动.

ruby haml ruby-on-rails

2
推荐指数
1
解决办法
1284
查看次数

在drupal页面或表单中包含javascript

是否存在将JavaScript包含在页面或表单中的drupal函数或约定?

我目前的解决方案是硬编码的脚本标记,我的窗体的主题化函数的输出的一部分,但它似乎应该有一个更好的办法,因为JavaScript的一般应在加载页面上的最后一件事.

javascript php jquery drupal

1
推荐指数
1
解决办法
469
查看次数

变量参数,使用Type Families而不是Multi-param Typeclasses

以下是我用MultiParamTypeClasses表达的内容:

class ListResultMult r a where
  lstM :: a -> [a] -> r

listM :: ListResultMult r a => a -> r
listM a = lstM a []


instance ListResultMult r a => ListResultMult (a -> r) a where
  lstM a as x = lstM x $ a:as

instance ListResultMult [a] a where
  lstM a as = reverse $ a:as

instance Show a => ListResultMult (IO ()) a where
  lstM a as = print . reverse $ a:as
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的,使用TypeFamilies(TypeSynonymInstances没有帮助):

class …
Run Code Online (Sandbox Code Playgroud)

haskell variadic-functions type-families

1
推荐指数
1
解决办法
274
查看次数

有效的功能表示

功能类型A - > B在某种意义上不是很好.虽然功能是一等值,但由于效率问题,通常无法自由操作它们.你不能应用太多的转换(A - > B) - >(C - > D),在某些时候你必须计算一个值.

显然这是由于 - >的非严格性质.

有很多技巧可以处理Double - > Double类型的函数.可以将它们表示为给定某个基础的向量,其可以包括trig函数,多项式等.

是否有任何一般技巧来绕过A - > B类型的低效率?

或者替代 - >?

performance haskell language-theory function

1
推荐指数
1
解决办法
259
查看次数

重新安装cabal-dev的行为

我一直在使用的最新cabal-install(0.13.3,来自darcs repo)很不错; 它会告诉您何时可以通过重新安装来破坏GHC安装.我想知道的是:假设一个人cabal install foo 重新安装破坏我的GHC.如果我cabal-dev install foo反而会怎么样?我能避免打破GHC吗?我真的可以foo在cabal-dev沙箱中使用该软件包,还是只是一个破碎的沙箱?

示例:yesod,GHC 7.4.1,cabal-dev 0.9由github源码构建,Cabal 1.14.0库.

haskell ghc cabal-install

1
推荐指数
1
解决办法
315
查看次数

使用文本而不是字符串的“交互”

我想重写该interact函数,但使用Text代替String。是否可以使用Data.Text和/或Data.Text.Lazy完成与相同的行为interact

例如,当我使用来运行该程序时String

main = interact (unlines . map f . lines)
  where f "hello" = "wassup"
        f _ = "wat?"
Run Code Online (Sandbox Code Playgroud)

它等待一行输入,然后打印出一行作为响应,并等待下一行输入。我想编写相同的代码并使其工作Text

{-# LANGUAGE OverloadedStrings #-}
import Data.Text.Lazy (Text)
import qualified Data.Text.Lazy as T

textInteract :: (Text -> Text) -> IO ()
textInteract = undefined

main = textInteract (T.unlines . map f . T.lines)
  where f "hello" = "wassup"
        f _ = "wat?"
Run Code Online (Sandbox Code Playgroud)

但是,不只是textInteract …

text haskell lazy-io

1
推荐指数
1
解决办法
231
查看次数