小编hom*_*mam的帖子

Lion Xcode 4.3中缺少/ developer目录

我按照如何完全删除Xcode 4,然后从AppStore安装了4.3 版本中的说明删除了旧版本的Xcode .但是现在/开发人员目录丢失了.

我可以在/applications/xcode.app/contents/Developer/中找到相同的目录结构./ developer只是该目录的链接,我该如何再次创建它?

xcode ios osx-lion

13
推荐指数
2
解决办法
2万
查看次数

型号安全流量(状态机)

我正在尝试在Haskell中创建一个类型安全的问答流程.我将QnA建模为有向图,类似于FSM.

图中的每个节点都代表一个问题:

data Node s a s' = Node {
  question :: Question a,
  process :: s -> a -> s'
}
Run Code Online (Sandbox Code Playgroud)

s是输入状态,a是问题的答案,s'是输出状态.节点取决于输入状态s,这意味着为了处理答案,我们必须处于特定状态之前.

Question a代表一个简单的问题/答案产生类型的答案a.

通过类型安全我的意思是,例如给定一个节点Node2 :: si -> a -> s2,如果si依赖于s1那么所有以结尾的路径Node2必须通过s1首先产生的节点.(如果s1 == si那么所有的前辈都Node2 必须生产s1).

一个例子

QnA:在网上购物网站,我们需要询问用户的体型和喜欢的颜色.

  1. e1:询问用户是否知道他们的大小.如果是,那么去e2另外去e3
  2. e2:询问用户的大小,然后去ef询问颜色.
  3. e3:(用户不知道他们的大小),询问用户的体重并转到e4.
  4. e4:(之后e3)询问用户的身高并计算他们的体型然后去ef. …

haskell gadt

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

类型化的分层访问控制系统

如何在Haskell中定义一个简单的分层访问控制系统?

我的角色是Public > Contributor > Owner,这些角色属于层次结构.所有可以完成的事情Public也可以通过Contributor和完成Owner; 等等.

同样,操作也属于层次结构:None > View > Edit.如果允许角色编辑,它也应该能够查看.

data Role = Public | Contributor | Owner
data Operation = None | View | Edit

newtype Policy = Policy (Role -> Operation)
Run Code Online (Sandbox Code Playgroud)

在这个系统中,我可以表达公共可编辑的政策:

publicEditable :: Policy
publicEditable = Policy $ const Edit
Run Code Online (Sandbox Code Playgroud)

但是,这类系统并不妨碍我从定义这样愚蠢的政策(即允许PublicEdit,但否认对任何访问Owner):

stupidPolicy :: Policy
stupidPolicy = Policy check where
  check Public      = Edit
  check Contributor = View
  check Owner …
Run Code Online (Sandbox Code Playgroud)

haskell

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

为GADT派生读取实例

如何自动派生Read此GADT 的实例:

{-# LANGUAGE GADTs, StandaloneDeriving #-}

data TypeDec a where
  TypeDecInt    :: TypeDec Int
  TypeDecString :: TypeDec String

deriving instance Show (TypeDec a)

data Bar where
  Bar :: (Show a, Read a) => TypeDec a -> a -> Bar

deriving instance Show Bar
Run Code Online (Sandbox Code Playgroud)

这个想法是Bar一个可序列化的类型.

我可以Read通过以下代码段或Parsec 编写实例,但考虑到我有许多类似的类型TypeDecBar不同的模块,这是一个样板:

instance Read Bar where
  readsPrec _ s =
    let (bar, tup) = second breaks . breaks $ s
    in if "Bar" == bar …
Run Code Online (Sandbox Code Playgroud)

haskell template-haskell

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

Cabal错误:预处理指令无效# - }

$ cabal install arithmoi-0.4.0.3
Run Code Online (Sandbox Code Playgroud)

导致多个错误,如:

Math/NumberTheory/Moduli.hs:489:4:
     error: invalid preprocessing directive
      #-}
       ^
Run Code Online (Sandbox Code Playgroud)

我的系统:

OSX小牛队

Cabal版本= 1.18.1.1

GHCI版本= 7.6.3

提前致谢!

gcc haskell cabal haskell-platform

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

RxJS 等效于 Async.js mapLimit

Async.js mapLimit及其<name>Limit函数系列基本上像信号量一样工作:它们允许有限数量的任务同时运行,同时将额外的传入任务添加到队列中。队列成为(冷?连接?)生产者。一旦一个点可用(其中一个任务完成),任务运行器就会从队列中排出一个项目。

这样,有限数量的并发任务始终处于活动状态。

如何在 RxJS 中实现类似的功能?

javascript asynchronous rxjs async.js

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

多态数据类型的函数

数据Foo a定义如下:

data Foo a where
  Foo :: (Typeable a, Show a) => a -> Foo a
  -- perhaps more constructors

instance Show a => Show (Foo a) where
  show (Foo a) = show a
Run Code Online (Sandbox Code Playgroud)

有些情况:

fiveFoo :: Foo Int
fiveFoo = Foo 5

falseFoo :: Foo Bool
falseFoo = Foo False
Run Code Online (Sandbox Code Playgroud)

我如何定义任何函数b -> Foo a,例如:

getFoo :: (Show a, Typeable a) => String -> Foo a
getFoo "five" = fiveFoo
getFoo "false" = falseFoo
Run Code Online (Sandbox Code Playgroud)

这里 …

polymorphism haskell existential-type gadt

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

SQL Server选择不同

我想写一个这样的查询:

对于包含以下列的表:ColA ColB ColC,ColD

从ColD的表顺序中选择第一个(ColA,ColB,ColC,ColD)distinct(ColB,ColC)

该查询应该由ColD对表进行排序,然后通过ColB和ColC的组合对结果进行分组(它们可能具有不同的数据类型)并返回组中的第一行(包含表的所有列).

在MS SQL Server 2005中怎么可能?

sql sql-server join group-by distinct

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

多态匿名函数类型别名

似乎命名function()语法与非同义函数语法的类型去除之间存在细微差别:

type F<X, Y> = (x: X) => Y

// works:
function apply<X, Y>(f: F<X, Y>, x: X) : Y {
    return f(x)
}

// works:
const apply0 : <X, Y>(f: F, x: X) => Y = (f, x) => f(x)

// doesn't work
const apply1 : <X, Y>(f: F<X, Y>, x: X) => Y = (f, x) => f(x)
Run Code Online (Sandbox Code Playgroud)

流控制台代码段

我需要从任何引用中删除泛型类型注释,以F<X, Y>apply类型检查器的匿名函数的参数中键入.

这是违反直觉的.

[编辑:]但似乎Flow能够键入检查apply1调用,即使它无法键入检查apply1本身:

apply1(x => x * 2, …
Run Code Online (Sandbox Code Playgroud)

javascript flowtype

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

GADT的功能

这是函数到多态数据类型的后续问题

数据类型Question使用Message(问题文本)和String -> a将用户输入映射到问题结果的函数()模拟问题/答案:

data Question where
  Simple :: (Typeable a, Show a) => Message -> (String -> a) -> Question
Run Code Online (Sandbox Code Playgroud)

此CLI程序应首先获取其名称,Question使用getQuestion函数查找实例,然后运行Question并打印出结果.

{-# LANGUAGE GADTs #-}

import Data.Typeable

type Message = String

data Question where
  Simple :: (Typeable a, Show a) => Message -> (String -> a) -> Question
  -- more constructors

yourName :: Question
yourName = Simple "Your name?" id

yourWeight :: Question
yourWeight = …
Run Code Online (Sandbox Code Playgroud)

haskell gadt

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

避免使用Monad变形金刚的孤儿实例

我有monad变换器对应我的应用程序的独立功能.

天气模块中:

class Monad m => WeatherT m where
  byCity :: String -> m WeatherData

newtype MockWeather m a = MockWeather { 
  ... 
} deriving (Functor, Applicative, Monad, MonadTrans)


instance Monad m => WeatherT (MockWeather m) where
  ...
Run Code Online (Sandbox Code Playgroud)

Counter模块中:

class Monad m => CounterT m where
  increment :: m Int
  current :: m Int

newtype MockCounter m a = MockCounter {
  ...
} deriving (Functor, Applicative, Monad, MonadTrans)

instance Monad m => CounterT (MockCounter m) where …
Run Code Online (Sandbox Code Playgroud)

haskell monad-transformers

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