我正在使用shell脚本执行命令行xcodebuild.我的问题是,如果我打开并关闭xx.xcodeproj文件一次然后使用该命令它运作良好.
不知何故,如果我深入了解文件更改,这project.xcworkspace是唯一已更改的文件.此文件是否有效,是否应将其检入版本控制?这会引起任何问题吗?
我听说它和以下一样重要.pbxproj:这是真的吗?
我找不到任何有效的文档来讨论xcode项目文件中各种文件的角色和职责.请提供帮助我理解的链接.
我一直在浏览Typeclassopedia来学习类型类.我不理解Alternative(MonadPlus就此而言).
我遇到的问题:
'pedia说"替代类型类适用于具有幺半群结构的Applicative仿函数." 我不明白 - 不是替代意味着与Monoid完全不同的东西吗?也就是说,我理解了替代类型类在两件事之间的选择,而我理解Monoids是关于组合事物.
为什么Alternative需要一个empty方法/成员?我可能错了,但似乎根本没有使用...至少在我能找到的代码中.它似乎不符合课堂主题 - 如果我有两件事,需要选择一件,我需要什么'空'?
为什么Alternative类需要一个Applicative约束,为什么它需要一种* -> *?为什么不<|> :: a -> a -> a呢?所有的实例仍然可以用同样的方式实现......我想(不确定).Monoid没有提供什么价值?
什么是点MonadPlus式类?我不能解开所有善良的通过只是使用的东西既是Monad和Alternative?为什么不放弃呢?(我确定我错了,但我没有任何反例)
希望所有这些问题都是连贯的......!
赏金更新:@Antal的答案是一个很好的开始,但Q3仍然是开放的:替代品提供的Monoid不是什么?我发现这个答案不能令人满意,因为它缺乏具体的例子,并且特别讨论了Alternative的高知名度如何将它与Monoid区分开来.
如果要将应用效果与Monoid的行为结合起来,为什么不只是:
liftA2 mappend
Run Code Online (Sandbox Code Playgroud)
这对我来说更加令人困惑,因为许多Monoid实例与Alternative实例完全相同.
这就是为什么我要寻找具体的例子,说明为什么备选是必要的,以及它与Monoid的不同之处 - 或者意味着不同的东西.
在面向对象的编程中,我们可以说核心概念是:
函数式编程会是什么?
假设我有以下数据模型,用于跟踪棒球运动员,球队和教练的统计数据:
data BBTeam = BBTeam { teamname :: String,
manager :: Coach,
players :: [BBPlayer] }
deriving (Show)
data Coach = Coach { coachname :: String,
favcussword :: String,
diet :: Diet }
deriving (Show)
data Diet = Diet { dietname :: String,
steaks :: Integer,
eggs :: Integer }
deriving (Show)
data BBPlayer = BBPlayer { playername :: String,
hits :: Integer,
era :: Double }
deriving (Show)
Run Code Online (Sandbox Code Playgroud)
现在让我们说经常是牛排狂热分子的经理想要吃更多的牛排 - 所以我们需要能够增加经理人饮食中的牛排含量.以下是此功能的两种可能实现:
1)这使用了大量的模式匹配,我必须得到所有构造函数的所有参数排序正确...两次.它似乎不会很好地扩展或者非常易于维护/读取.
addManagerSteak :: BBTeam -> BBTeam
addManagerSteak (BBTeam …Run Code Online (Sandbox Code Playgroud) 在本演示文稿的第30/78页幻灯片中,Simon建议类型类的实现在开始时是一种"绝望".有谁知道那是为什么?
我的表看起来像这样(我正在使用MySQL):
m_id | v_id | timestamp
------------------------
6 | 1 | 1333635317
34 | 1 | 1333635323
34 | 1 | 1333635336
6 | 1 | 1333635343
6 | 1 | 1333635349
Run Code Online (Sandbox Code Playgroud)
我的目标是每次m_id,并按最高时间戳排序.
结果应该是:
m_id | v_id | timestamp
------------------------
6 | 1 | 1333635343
34 | 1 | 1333635336
Run Code Online (Sandbox Code Playgroud)
我写了这个查询:
SELECT * FROM table GROUP BY m_id ORDER BY timestamp DESC
Run Code Online (Sandbox Code Playgroud)
但是,结果是:
m_id | v_id | timestamp
------------------------
34 | 1 | 1333635323
6 | 1 | 1333635317
Run Code Online (Sandbox Code Playgroud)
我认为这是因为它首先执行GROUP_BY然后对结果进行ORDER. …
假设我有很多功能:
f :: a -> Maybe a
g :: a -> Maybe a
h :: a -> Maybe a
Run Code Online (Sandbox Code Playgroud)
我想用以下方式组合它们:如果f返回Nothing,则计算g.如果g返回Nothing,则计算h.如果其中任何一个计算Just a,请停止链.而整个构图(例如f)当然应该返回Maybe a.
这与Maybe monad的典型使用相反,如果返回Nothing,通常会停止计算.
用于链接这样的计算的Haskell成语是什么?
是否可以将Integer转换为Int?另一个方向是可能的:toInteger.我知道Integer能够存储更大的值,但有时需要使用std-lib函数进行对话.我试过(n :: Int)和我找到的其他代码示例 - 但没有任何作用.
takeN :: Integer -> [a] -> [a]
takeN n l = take n l
Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习python(v3.2.3)并且return在这个函数中遇到了一个奇怪的问题:
def test(x):
if x > 9 :
test(x - 10)
else:
print('real value',x)
return x
x = int(input())
y = test(x)
print('this should be real value',y)
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到:
45
real value 5
this should be real value None
Run Code Online (Sandbox Code Playgroud)
但我预计:
45
real value 5
this should be real value 5
Run Code Online (Sandbox Code Playgroud)
我尝试return x在外面添加if,我得到了默认输入值.任何人都可以解释一下return有效吗?