如何系统地计算系统F中给定类型的居民数量?
假设有以下限制:
所有居民都会终止,即没有底部。所有居民都没有副作用。
例如(使用Haskell语法):
Bool有两个inhabitants.(Bool, Bool)有四个inhabitants.Bool -> (Bool, Bool)有十六个inhabitants.forall a. a -> a有一个inhabitant.forall a. (a, a) -> (a, a)有四个inhabitants.forall a b. a -> b -> a有一个inhabitant.forall a. a没有inhabit
这是我第一个使用Haskell的程序。我写这篇文章是为了把我读到的关于FP的所有内容付诸实践。我首先要弄清楚的是,如何对我将从DB中提取的数据建模(最终我也会写信给DB )。我从我的users表开始,写了这样的东西
module Model (User) where
class Audited a where
creationDate :: a -> Integer
lastUpdatedDate :: a -> Integer
creationUser :: a -> User
lastUpdatedUser :: a -> User
clas
我想从json对象中提取一个值。我有这样的想法:
post "/test" $ do
a <- jsonBody'
let b = show (a :: Object) -- works well
myVal <- (a :: Object) .: "some_key" -- error
text "test123"
以及错误:
• Couldn't match type ‘aeson-1.0.2.1:Data.Aeson.Types.Intern
考虑以下JSON结构:
{"k1":
{"k2":
[{"a": 3, "b": 4, "c": 2},
{"a": 1, "b": 2, "c": 9}]},
"irrelevant": "x"}
和Haskell数据类型:
data My = My Int Int
上面的JSON应该解析成My:[My]的列表,而两个Int应该分别取自JSON数组的"a“和"b”键:
[My 3 4, My 1
据我所知,Haskell中的代数数据类型可以有两种形式,即和(例如data Bool = True | False)或乘积(例如data Pair = P Int Double)。下面是一些数据类型,有髓和单值构造函数。
data Z = Z
data S n = S n -- I think that this is a singleton type?
data S = S Int
这些类型是否被视为代数数据类型?如果是这样的话,他们叫什么?
我在MacOSX10.11上为El capitan使用了最新的Haskell平台7.10.2-a ()。
当我尝试用yesod安装cabal install yesod时,有多条错误消息,如:
Building email-validate-2.1.3...
Building http-api-data-0.2.1...
Building fast-logger-2.4.1...
Building http-date-0.0.6.1...
Failed to install crypto-random-0.0.9
Build log ( /Users/smcho/.cabal/logs/cry
我需要一个库来对cp1251中的数据进行编码,以使用使用它的api。
为此,我只找到了两只李子。库和库。第一个看起来更好,因为它可以静态地链接到我的程序。
但我甚至不能编译它!我使用堆栈,所以我在我的encoding文件中添加了构建-dep,然后堆栈解决器用编码-0.8在.cabal文件中更新我的堆栈yaml文件。
但是在运行stack build之后,我得到了一个错误
Data/Encoding/Preprocessor/XMLMapping.hs:11:8:
Could not find module ‘Text.XML.HaXml.Types’
Use -v to see
我是Haskell的新手,来自一个命令式的编程背景。我希望能够以"Haskell方式“将对象序列化为JSON,但尚不确定如何做到这一点。
我读过一些关于JSON的,并且和伊索一起玩过。我还查看了一些用Haskell编写的JSON库,如:
这使我能够从对象创建非常基本的JSON字符串(也要感谢):
{-# LANGUAGE OverloadedStrings, DeriveGeneric #-}
import Data.Aeson
import GHC.Generics
data User = User {
email :: String,
name ::
我试图在我的Haskell代码中建立和运行一个简单的Json解析器,我偶然发现了Data.Aeson,这似乎是解决我的问题的一个可行的解决方案
我跟踪了,经过一些小小的修改,我得到了以下内容:
{-#LANGUAGE OverloadedStrings #-}
import Data.Aeson
import Data.Text
import Control.Applicative
import Control.Monad
data Person =
Person { firstName :: Text
, lastName :: Text
我是Haskell的新手,我非常喜欢它的编程方法!
在过去的两天里,我一直遇到这个问题,无论我怎么尝试,它都不起作用。我想我混淆了Haskell的本质。
下面是我的代码(不起作用):
data Part = Part {partName :: String, events :: [Event]}
class Event e where
getChildren :: e -> [e]
这是一个音乐应用程序。Event可以是NoteEvent、DecrescendoEvent、VolumeEvent、KeyEvent,也可以是在一段音乐中“发生”的任何东西。
NoteEvent不会有
我正在尝试解析JSON对象,这些对象通常是形式的
{
"objects": [a bunch of records that can assume a few different forms],
"parameters": [same deal],
"values": {
"k1": "v1",
"k2": "v2",
...
}
}
使用哈斯克尔的伊索图书馆。这个