小编Alb*_*zia的帖子

GHC 中如何实现整数比较?

起初,我想研究一下如何Integer从类中派生出来Ord

\n

我在 GHC.Classes 中得到了这个定义

\n
instance Ord Integer where\n    (<=) = leInteger\n    (>)  = gtInteger\n    (<)  = ltInteger\n    (>=) = geInteger\n    compare = compareInteger\n
Run Code Online (Sandbox Code Playgroud)\n

compareInteger指向另一个源文件,GHC.Integer.Type. 它的定义如下\xe2\x80\xaf:

\n
compareInteger :: Integer -> Integer -> Ordering\ncompareInteger (Jn# x)  (Jn# y) = compareBigNat y x\ncompareInteger (S#  x)  (S#  y) = compareInt#   x y\ncompareInteger (Jp# x)  (Jp# y) = compareBigNat x y\ncompareInteger (Jn# _)  _       = LT\ncompareInteger (S#  _)  (Jp# _) = LT\ncompareInteger (S#  _)  (Jn# …
Run Code Online (Sandbox Code Playgroud)

haskell ghc

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

获取包含unicode字符超过0xffff的字符串长度

I\xe2\x80\x99m 使用这个字符,双锐号\'\',unicode 是 0x1d12a。
\n如果我在字符串中使用它,我可以\xe2\x80\x99t 获得正确的字符串长度:

\n\n
str = "F"\nstr.length // returns 3, even though there are 2 characters!\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何让函数返回正确的答案,无论 I\xe2\x80\x99m 是否使用特殊的 unicode \xe2\x80\xaf?

\n

javascript unicode

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

为什么类型在do块的下一行而不是在同一行匹配?

我正在从用户必须输入的输入中读取几行内容:

main :: IO ()
main = do
  let size = 3
  arr <- replicateM size getLine
  let pairs = map parsePair arr
  print pairs
Run Code Online (Sandbox Code Playgroud)

为什么我可以map parsePair arr在单独的行上做而不是在同一行上做,像这样:

arr <- map parsePair (replicateM size getLine)
Run Code Online (Sandbox Code Playgroud)

这样做,我得到了错误?:

• Couldn't match type ‘[]’ with ‘IO’
  Expected type: IO [Int]
    Actual type: [[Int]]
Run Code Online (Sandbox Code Playgroud)

为了给您更多细节,这里是parsePair

parsePair string = map parseInt $ words string

parseInt :: String -> Int
parseInt s = read s :: Int
Run Code Online (Sandbox Code Playgroud)

io monads haskell do-notation io-monad

4
推荐指数
2
解决办法
81
查看次数

我应该使用 Redux store.subscribe() 还是用 react-redux &lt;Provider&gt; 包装我的应用程序?

我见过这两种方法?:在这个例子中,这是从 Dan Abramov 的课程中​​获取的,他正在使用这种方法?:

const render = () => {
  ReactDOM.render(
    <Counter
      value={store.getState()}
      onIncrement={() =>
        store.dispatch({
          type: 'INCREMENT'           
        })            
      }
      onDecrement={() =>
        store.dispatch({
          type: 'DECREMENT'           
        })            
      }
    />,
    document.getElementById('root')
  );
};

store.subscribe(render);
Run Code Online (Sandbox Code Playgroud)

Redux 中的 store.subscribe() 函数允许添加在分发操作时调用的侦听器。

另一个示例中,这是 Redux 文档中的一个示例?:

render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
)
Run Code Online (Sandbox Code Playgroud)

不使用 store.subscribe ,而是将整个 App 包装在一个<Provider>组件中。

这两种方法有什么区别??看起来他们正在做同样的事情,那就是确保应用程序具有最新版本的状态。

如果我已经用<Provider>.

reactjs redux redux-store

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

标签 统计

haskell ×2

do-notation ×1

ghc ×1

io ×1

io-monad ×1

javascript ×1

monads ×1

reactjs ×1

redux ×1

redux-store ×1

unicode ×1