小编Dav*_*vid的帖子

使用UITabBar按钮时,TabBar按钮变为无法点击

我用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)

xcode uitoolbar ios7

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

如何更改默认错误消息"密码不正确".在MVC5的管理帐户?

也许这是一个简单的问题,但我已经厌倦了寻找它.

我在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时更改默认错误消息,现在的默认错误消息是密码错误.我想换另一条消息,请帮助我.

c# asp.net asp.net-mvc-5

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

对于 1:1 类型/类型-类-实例关系,是否有可行且类型安全的替代方案?

这个问题最初是在我研究动态 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

5
推荐指数
0
解决办法
129
查看次数

monad变换器的用法

我正在阅读Haskell书中关于monad变换器的内容.

作者提到了以下内容:

Monad怎么样?组成两个具有Monad实例的任意数据类型没有问题.当我们使用Compose with Maybe和list时,我们已经看到了这一点,它们都定义了Monad实例.但是,这样做的结果并没有给你一个Monad.

问题归结为缺乏信息.Compose正在使用的两种类型都是多态的,所以当你尝试为Monad编写bind时,你试图将两个多态绑定组合成一个组合绑定.事实证明,这是不可能的:

{-# 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
  (>>=) = ???
Run Code Online (Sandbox Code Playgroud)

这些是我们尝试组合的类型,因为并且必然都是具有自己的Monad实例的monad:

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) => …
Run Code Online (Sandbox Code Playgroud)

haskell

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

为什么在Ocaml中使用模块类型?

我对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)

ocaml types functional-programming

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

如何从具有类型相等约束的 Scott 编码的 GADT 中获取值?

我正在阅读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

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

什么是Haskell中函数的理论定义

从基础的角度来看,我希望看到Haskell中所谓的函数.

断然地看,有"事物"以关联的方式组成,具有身份功能,这在理论上就足够了.

但每个人都试图说服我,这不是函数的定义方式.函数被定义(他们说)作为一组来自两个集合(域和codoman)的元素对,满足某些条件.意味着函数只是一个集合.你无法在不是集合的东西上定义函数.

如果我们将这种方法应用于Haskell,我看到的是Hask类别只是一个子类别Sets,对我来说,看起来很奇怪.

我宁愿扩展函数的概念以适用于我们在Haskell中的内容.

这里在评论这个问题切线感动,但不是很深刻.我想听一个明确的陈述,比如"但实际上它们都是套装",或者"不,我们与集合理论无关".

有任何想法吗?注意事项?

logic haskell set-theory category-theory

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

计算哈斯克尔的窦

这是我的问题:我需要一个计算某些数字的窦的函数......

在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)

c++ haskell

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

无法在Haskell中获得正弦函数的近似值

我已经尝试了各种我能想到的方式并且最终处于智慧状态.我正在尝试在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)

haskell

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

de sugaring做符号

我想用以下的符号表示糖.但我不确定我是否做得对:

方法是:

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 do-notation applicative

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

Haskell递归堆栈溢出

我对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)

stack-overflow recursion haskell guard

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

使用递归而不是循环将C代码转换为haskell代码(无列表)

我想将以下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)

recursion counter haskell loops nested

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