我有以下组件:
const ParentComponent: React.FC = () => {
// Somewhere in the code, I set this to some value
const [newType, setNewType] = useState<any>(undefined);
// Somewhere in the code, I set this to true
const [enableAddEdge, setEnableAddEdge] = useState(false);
const ad
我试图使用ekmett的库bound和free来定义抽象语法类型。我有一些有用的东西,我可以从下面的最起码的例子来说明:
{-# LANGUAGE DeriveFunctor #-}
import Bound
import Control.Monad.Free
type Id = String
data TermF f α =
AppF α α
| BindF Id (Scope () f α)
deriving Functor
newtype Term' α = T {unT :: Free (TermF Term) α}
type Term = Free (
我已经使用单台转换器堆栈编写了许多函数:
data Options
data Result
data Input
type Ingest a = EitherT String (ReaderT Options IO) a
foo :: Input -> Ingest Result
诸若此类。现在,大多数这些函数基本上是纯的。我只需要这些函数中的一个IO :这个函数读取一个文件,并记录(使用log :: String -> IO ())它已经这样做了。因此,这个函数的杂质“感染”了我的整个代码库,使得所有这些函数都能够执行IO,尽管它们不需要这样做,只是调用这个函数。这是令人不快的
我试图将文本框隐藏在HTML中,直到选中下拉列表的某个值为止。我在javascript方面非常糟糕,我寻找解决方案已经有一段时间了。
到目前为止,我能做到的就是:
Javascript代码:
function newCustomerType()
{
var ddl = document.getElementById("customerType");
var selectedValue = ddl.options[ddl.selectedIndex].value;
if (selectedValue == "new")
{
我声明了以下类型
type Parser a = String -> [(a,String)]
以及对解析器进行如下操作的一些函数:
succeed :: a -> Parser a
succeed v = \inp -> [(v,inp)]
在尝试运行stack ghci以测试上述函数succeed时,我发现了一个错误,即Parser不是show的实例,所以我尝试更新代码并添加以下内容
instance Show Parser where
show [(v,inp)] = show (v,inp)
但是我得到了一个错误,Show期望参数是*,但它是* -> *
我
有人知道如何使用eclipse模板在类签名的上方插入一个"@RunWith“吗?
前:
@RunWith(Parameterized.class)
public class MyClassTest {
...
@Parameters
public static Collection<Object[]> parameters() {
List<Object[]> list = new ArrayList<Object[]>();
list.add(new Object[] { "mind!"
我希望创建一个可以由变量或常量(例如数学表达式)组成的表达式,因此我创建了一个newtype来将这些表达式表示为字符串,但是在函数中使用它时,它不起作用:
newtype Expr = Expr String deriving (Show)
constant :: Int -> Expr
constant n = show n
variable :: String -> Expr
variable v = v
我遇到的错误是Expr类型与字符串不匹配,而且我不能使用显示函数,即使我在前面定义了它。请帮帮忙!
假设我有这样的数据类型
data A a = A a
data B b = B b
和type类
class C c where
f :: c a -> a
现在C类需要一种类型的* -> *,所以我可以
instance C A where
f (A a) = a
instance C B where
f (B b) = b
现在给出一个函数,例如:
ab :: b -> A (B b)
ab = A . B
如何为结果类型声明C的实例?
首先,我可以将类型同义词与TypeSynonymInstances一起使用,如下所示:
type AB b =
我正在尝试创建一个包含预定义类型的Haskell类实例,但一直收到这个错误:“Graph (AdjListGraph a)' (All instance types must be of the form (T t1 ... tn) where T is not a synonym. Use -XTypeSynonymInstances if you want to disable this.) In the instance declaration for图(AdjListGraph A)的实例声明非法”。
有人能帮我解决这个问题吗?代码如下:
type Node =
我在作业代码中读到了这句话:-
newtype STR a = STR (Store -> (Result a, Store))
上面的链接使它看起来像是:
a === (Store -> (Result a, Store))
这怎么可能是有效的陈述呢?这是否意味着a是一个以Store作为参数并返回('the same function wrapped in Result', Store)的函数?
在我提出问题之前的一些设置:
/* roughly equivalent to a union type */
sealed trait NewType
object NewType {
final case class Boolean(record: Boolean) extends NewType
final case class Long(record: Long) extends NewType
final case class String(record: String) extends NewType
}
/* Try to convert a record of
我试图理解国家新类型,并且在一本书中对同构的解释很难理解:
新类型必须具有与它们包装的类型相同的底层表示形式,因为新类型包装器在编译时消失。因此,包含在newtype中的函数必须与它包装的类型同构。也就是说,必须有一条从newtype到它包装的东西的一条路,然后再回来,而不会丢失信息。
什么是适用于国家新类型?
newtype State s a = State { runState :: s -> (a, s) }
这种解释“从newtype到它包装的东西必须有一条路要走,”这个解释还不清楚。
另外,你能不能说,在这个例子中有一个同构,哪里不是,为什么。
type Iso a b
在Haskell中编写插入和成员操作。确保在ML和Haskell中,Set数据类型与列表不同。在Haskell中,将Set类型定义为类Eq和Show的实例。
let setAdd l n = if (elem l n) then l else l ++ [n]
let setMember l i = l !! i
我上面写的代码只是使它具有在列表上执行的功能。
有办法把这个变成课堂吗?对不起,我只是在学习函数式编程。是否有一种方法可以实际创建具有成员变量(例如list )的Set类?
我目前正在学习活性香蕉玻璃钢,并希望创建一个随机函数流。我想出了这个:
-- | take number generator, and some pulse event stream, generate random function stream
mkRandom :: (Random a,RandomGen g) => g -> Event t b -> Event t ((a,a) -> a)
mkRandom rng es = (\f -> \r -> fst $ f r) <$> (accumE first $ next <$&g
我看到了这个问题:
在我发现可以使用purescript-调试打印它的地方,例如使用:
> traceAny {a:1} id
{ a: 1 }
unit
然而,我想知道为什么不为记录创建一个默认的Show实例:
> {a:1}
Error found:
in module $PSCI
No type class instance was found for
Data.Show.Show { "a" :: Int
}
在Haskell中,如果您有一个类型的“家族”(例如,N对N-元素矩阵的某些值),以及一个“相关”类型的并行家族(例如,N-元素向量,对于N的相同值),以及一个需要每个家族一个特定类型的操作(例如,将N-乘-N-元素矩阵和N-元素列向量相乘),那么是否可以为该操作声明一个类型类?
对于这个具体的例子,我想应该是这样的:
class MatrixNxN m where
--| Multiplication of two N-by-N-element matrices
mmul :: Num a => m a -> m a -> m a
--| Multiplic
我正在努力理解以下所有选项是否可行。我完全理解委托和事件的用法,但是Action似乎提供了语法糖,使它更容易(或者我是不是遗漏了什么)?我已经测试了所有这些,它们都能工作,但这并不意味着它们都是好的模式。
public delegate WorkCompleteDel(sting value);
public class MyClass{
//Are these all viable, safe options?
//ties the above delegate, pretty standard pattern
public event WorkComplete
当在某些类上下文中使用时,新类型通常用于更改某些类型的行为。例如,可以使用Data.Monoid.All包装器来更改Bool用作Monoid时的行为。
我目前正在编写这样一个新类型的包装器,它可以应用于很多不同的类型。包装器应该改变一个特定类实例的行为。它可能看起来像这样:
newtype Wrapper a = Wrapper a
instance Special a => Special (Wrapper a) where
-- ...
但是,添加此包装器通常会更改包装类型的可用性。例如,如果我以前可以使用函数mconcat :: Monoid a => [a] ->
我可以从其他变量类型定义变量的类型吗? 示例:我创建了用户: class User(BaseModel):
id: str # Not sure if will be str, int or UUID
tags: Optional[List[str]]
name: str 现在,在其他地方,我有一个使用User.id作为参数的函数: def print_user_id(user_id: str): # If I change type of User.id, I need to update this!
pass 我怎么能说user_id的类型是type(