我用UINavigationBar和创建一个视图UITabBar.我在标签栏上添加了一个按钮,点击按钮,我隐藏标签栏并在底部显示工具栏.我的代码是针对当前以及之前的iOS版本编写的.我在self.edgesForExtendedLayout = UIRectEdgeNone;iOS7上使用此代码 这是我的代码:
- (void)hideTabBar {
UITabBar *tabBar = self.tabBarController.tabBar;
UIView *parent = tabBar.superview; // UILayoutContainerView
UIView *content = [parent.subviews objectAtIndex:0]; // UITransitionView
UIView *window = parent.superview;enter code here
[UIView animateWithDuration:0.5
animations:^{
CGRect tabFrame = tabBar.frame;
tabFrame.origin.y = CGRectGetMaxY(window.bounds);
tabBar.frame = tabFrame;
// CGRect contentFrame = content.frame;
// contentFrame.size.height -= tabFrame.size.height;
content.frame = window.bounds;
}];
if ([[[UIDevice currentDevice] systemVersion] intValue] < 7.0)
{
CGRect frame = tbl_AllFiles.frame;
frame.size.height -=tabBar.frame.size.height;
tbl_AllFiles.frame = frame;
} …Run Code Online (Sandbox Code Playgroud) 也许这是一个简单的问题,但我已经厌倦了寻找它.
我在AccountViewModels.cs中有这个(这是一个默认的MVC5项目).
public class ManageUserViewModel
{
[Required]
[DataType(DataType.Password)]
[Display(Name = "Current password")]
public string OldPassword { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
我知道这会使用Data Annotations,但我不知道如何在输入错误的OldPassword时更改默认错误消息,现在的默认错误消息是密码错误.我想换另一条消息,请帮助我.
这个问题最初是在我研究动态 JS 类型验证器时出现的,它依赖于字典传递样式作为一种相当简单的类型类机制,但我认为它也适用于 Haskell 或其他具有类型类机制的语言。
起初我认为在具有字典传递样式的设置中允许每个类型有多个类型类实例不会有太大问题,因为我可以完全控制类型类解析。但实际问题似乎是维护类型安全而不是类型类解析,因为我将使用类型验证器进行演示。由于代码是类型注释的,因此在某种程度上与语言无关。
// please assume `Number` to be a non-polymorphic `Int` type
Sum.Monoid // Monoid<Number>
Prod.Monoid // Monoid<Number>
Function.Monoid // Monoid<b> -> Monoid<(a -> b)>
Function.Monoid(Prod.Monoid) // Monoid<(a -> Number)>
Function.Monoid(Prod.Monoid).append // (a -> Number) -> (a -> Number) -> a -> Number
Run Code Online (Sandbox Code Playgroud)
当您应用这些类型时,类型安全会受到影响,因为可以在没有验证器抱怨的情况下编写以下精心设计的表达式:
Function.Monoid(Prod.Monoid)
.append(inc) (inc) (Sum.Monoid.empty); // yields 1 ((0 + 1) * (0 + 1)) instead of 4 ((1 + 1) * (1 + 1))
Run Code Online (Sandbox Code Playgroud)
在 Haskell 中,每个实例都有自己独特的类型来防止这种无意义的表达。但是必须从一种类型包装器转换为另一种类型包装器可能很乏味。
是否有可行的、类型安全的替代方案,或者这就是 Haskell 的设计者选择不同类型每个类实例的原因吗?
language-agnostic haskell functional-programming typeclass adhoc-polymorphism
我正在阅读Haskell书中关于monad变换器的内容.
作者提到了以下内容:
Monad怎么样?组成两个具有Monad实例的任意数据类型没有问题.当我们使用Compose with Maybe和list时,我们已经看到了这一点,它们都定义了Monad实例.但是,这样做的结果并没有给你一个Monad.
问题归结为缺乏信息.Compose正在使用的两种类型都是多态的,所以当你尝试为Monad编写bind时,你试图将两个多态绑定组合成一个组合绑定.事实证明,这是不可能的:
Run Code Online (Sandbox Code Playgroud){-# LANGUAGE InstanceSigs #-} -- impossible. instance (Monad f, Monad g) => Monad (Compose f g) where return = pure (>>=) :: Compose f g a -> (a -> Compose f g b) -> Compose f g b (>>=) = ???这些是我们尝试组合的类型,因为并且必然都是具有自己的Monad实例的monad:
Run Code Online (Sandbox Code Playgroud)Monad f => f a -> (a -> f b) -> f b Monad g => g a -> (a -> g b) -> g b从那些,我们正在尝试编写这个绑定:
Run Code Online (Sandbox Code Playgroud)(Monad f, Monad g) => …
我对Ocaml中的模块类型感到困惑.
我想知道在哪种情况下我们应该使用模块类型?
我通常在.mli中使用模块sig来公开一些细节,并在.ml中放置相应的实现模块结构.
例如:
.mli
module A:
sig
type t = T of string
end
Run Code Online (Sandbox Code Playgroud)
.ml
module A =
struct
type t = T of string
end
Run Code Online (Sandbox Code Playgroud)
出于这个原因,我认为Ocaml的模块就像C.中的.h和.c文件一样.
我知道,模块类型可以声明一个接口,但接口是不是因为Java的接口相同.
就像书中的一个例子:
open Core.Std
module type ID = sig
type t
val of_string : string -> t
val to_string : t -> string
end
module String_id = struct
type t = string
let of_string x = x
let to_string x = x
end
module Username : ID = String_id …Run Code Online (Sandbox Code Playgroud) 我正在阅读24 天 GHC 扩展的 Rank-N-Types 部分并遇到以下 GADT:
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
import Data.Char
data Some :: * -> * where
SomeInt :: Int -> Some Int
SomeChar :: Char -> Some Char
Anything :: a -> Some a
unSome :: Some a -> a
unSome (SomeInt x) = x + 3
unSome (SomeChar c) = toLower c
unSome (Anything x) = x
unSome (someInt 2) -- 5
Run Code Online (Sandbox Code Playgroud)
尽管unSome它的类型变量是多态的,但可以向编译器证明在这种SomeInt情况下,将三个添加到给定值是安全的。作者将这种类型称为细化。
现在我很好奇我是否可以用 Scrott …
haskell continuation-passing gadt refinements refinement-type
从基础的角度来看,我希望看到Haskell中所谓的函数.
断然地看,有"事物"以关联的方式组成,具有身份功能,这在理论上就足够了.
但每个人都试图说服我,这不是函数的定义方式.函数被定义(他们说)作为一组来自两个集合(域和codoman)的元素对,满足某些条件.意味着函数只是一个集合.你无法在不是集合的东西上定义函数.
如果我们将这种方法应用于Haskell,我看到的是Hask类别只是一个子类别Sets,对我来说,看起来很奇怪.
我宁愿扩展函数的概念以适用于我们在Haskell中的内容.
这里在评论这个问题切线感动,但不是很深刻.我想听一个明确的陈述,比如"但实际上它们都是套装",或者"不,我们与集合理论无关".
有任何想法吗?注意事项?
这是我的问题:我需要一个计算某些数字的窦的函数......
在C++中我写了这个:
double msin(double number, int counter = 0, double sum = 0)
{
// sin(x) = x - (x'3 / 3!) + (x'5 / 5!) - (x'7 / 7!) + (x'9 / 9!)
if (counter <= 20)
{
if (counter % 2 == 0)
sum += mpow(number, counter * 2 + 1) / mfak(counter * 2 + 1) ;
else
sum -= mpow(number, counter * 2 + 1) / mfak(counter * 2 + 1) ;
counter++;
sum = msin(number, …Run Code Online (Sandbox Code Playgroud) 我已经尝试了各种我能想到的方式并且最终处于智慧状态.我正在尝试在Haskell中编写正弦近似.我认为我遇到的问题与类型声明有关,但我不确定.
这是我的代码:
factorial 0 = 1
factorial n = n * factorial (n-1)
summation' f x 1 = f (x 1)
summation' f x n = f (x n) + f (x n-1)
sineX x i = (((-1)^i)/factorial(2*i+1))*(x^(2*i+1))
sineXApprox x n = summation' sineX x n
Run Code Online (Sandbox Code Playgroud)
如您所见,我将该功能拆分为三个子功能.
这是我在尝试将"sineXApprox 2 2"输入ghci时遇到的错误(顺便说一下,我在命令提示符下使用ghci):
<interactive>:503:1:
Could not deduce (Num (a0 -> a1))
arising from the ambiguity check for `it'
from the context (Num (a1 -> a1),
Num (a -> a1),
Num a,
Integral a1, …Run Code Online (Sandbox Code Playgroud) 我想用以下的符号表示糖.但我不确定我是否做得对:
方法是:
quote = do
time <- qtime
qcomma
ask <- double
qcomma
bid <- double
qcomma
askVolume <- double
qcomma
bidVolume <- double
endOfLine
return $ Quote time ask bid askVolume bidVolume
Run Code Online (Sandbox Code Playgroud)
和
quote = Quote <$> (qtime <* qcomma)
<*> (double <* qcomma)
<*> (double <* qcomma)
<*> (double <* qcomma)
<*> (double <* endOfLine)
Run Code Online (Sandbox Code Playgroud)
相当于:
qtime >>= (\time -> qcomma)
>> double
>>= (\ ask -> qcomma)
>> double
>>= (\bid -> qcomma)
>> double
>>= (\askVolume …Run Code Online (Sandbox Code Playgroud) 我对Haskell很新,很抱歉这个问题.但是 - 如何摆脱无休止的递归而不是溢出.这是代码:
foo :: Integer -> Integer
foo x
| x == 1 = 1
| x <= 0 = error "negative number or zero"
| odd x = foo 3 * x + 1
| x `mod` 2 == 0 = foo x `div` 2
| otherwise = x
Run Code Online (Sandbox Code Playgroud)
编辑:
foo :: Integer -> (Integer, Integer)
foo x
| x == 1 = (1, z)
| x <= 0 = error "negative number or zero"
| odd …Run Code Online (Sandbox Code Playgroud) 我想将以下c代码转换为haskell代码,而不使用列表。它返回两个数字出现的次数对于给定的n,其中n满足n=(a*a)*(b*b*b)。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(void) {
int n = 46656;
int i,j,counter=0,res=1;
int tr = sqrt(n);
for(i=1; i<=tr; i++) {
for(j=1; j<=tr; j++) {
res = (i*i) * (j*j*j) ;
if(res==n) {
counter=counter+1;
}
printf("%d\n",res);
}
}
printf("%d\n",counter);
}
Run Code Online (Sandbox Code Playgroud)
在循环方面,我设法在haskell中做了类似的事情,但仅是为了找到总和。我发现也很难在haskell中实现if部分和反部分(请参见c代码)。任何帮助,不胜感激!这也是我的haskell代码:
sumF :: (Int->Int)->Int->Int
sumF f 0 = 0
sumF f n = sumF f (n-1) + f n
sumF1n1n :: (Int->Int->Int)->Int->Int
sumF1n1n f 0 = 0
sumF1n1n f n = sumF1n1n f (n-1) …Run Code Online (Sandbox Code Playgroud)