如果我有一个功能f :: State Int ()
,是否可以在另一个功能中使用它g :: StateT Int IO ()
?嵌套它f = do { something; g }
无法进行类型检查Couldn't match type 'Data.Functor.Identity.Identity' with 'IO'
.
如果我有两个模块都使用Control.Lens.TH
' makeFields
从记录生成字段,并且每个不同模块中的记录具有相同的字段名称,那么确保两个模块使用相同name
镜头定义的最佳方法是什么?的HasName
,而不必在模块中的一个类取决于其它?
目前,我正在使用另一个以SharedFields
单个记录命名的模块,每个字段都需要共享,然后SharedFields
在需要生成TH字段的任何其他内容中导入模块 - 但这很尴尬且容易出错.
module First where
import Control.Lens
data First = First { firstName :: Bool }
deriving (Read, Show, Eq)
makeFields ''First
Run Code Online (Sandbox Code Playgroud)
module Second where
import Control.Lens
data Second = Second { secondName :: () }
deriving (Read, Show, Eq)
makeFields ''Second
Run Code Online (Sandbox Code Playgroud)
module Third (name) where
import First
import Second
Run Code Online (Sandbox Code Playgroud) 试图编写我的第一个Android的ArrayAdapter,目前惨遭失败.它在该setAdapter(adapter);
行崩溃并抛出NullPointerException.
ContractTestActivity:
public class ContractTestActivity extends Activity {
private ArrayList<Contract> contracts;
public final String TAG = "ContractTest";
//public Contract newContract = new Contract();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView list;
list = (ListView)findViewById(R.id.list);
ArrayAdapter<Contract> adapter = new ContractAdapter(this, android.R.layout.simple_list_item_1, contracts);
list.setAdapter(adapter);
}
}
Run Code Online (Sandbox Code Playgroud)
ContractAdapter:
public class ContractAdapter extends ArrayAdapter<Contract> {
private ArrayList<Contract> contracts;
public ContractAdapter(Context context, int view, ArrayList<Contract> passedContracts) {
super(context, view, passedContracts);
contracts = …
Run Code Online (Sandbox Code Playgroud) 我想初始化类的实例consoleDroid
有consoleDroid console = new consoleDroid();
,但它抛出一个class, interface, or enum expected
编译错误.什么是初始化课程的正确方法?
caseSelector.java:
package com.caseselector;
import android.app.Activity;
import android.os.Bundle;
consoleDroid console = new consoleDroid();
public class caseSelector extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
console.create();
}
}
Run Code Online (Sandbox Code Playgroud)
consoleDroid.java:
package com.caseselector;
import android.view.View;
import android.widget.TextView;
import android.widget.EditText;
import android.widget.Button;
public class consoleDroid {
private static String output;
private Button consoleButton;
private TextView consoleView;
private EditText …
Run Code Online (Sandbox Code Playgroud) {-# LANGUAGE NoMonomorphismRestriction #-}
module Try where
f :: IO (a -> IO String)
f = return $ const getLine
main :: IO ()
main = do
g <- f
:: IO (a -> IO String)
g "String" >>= print
g 5 >>= print
Run Code Online (Sandbox Code Playgroud)
即使使用NoMonomorphismRestriction
标志和显式类型签名,该模块也无法编译Couldn't match expected type ‘[Char]’ with actual type ‘Int’
,尽管g
它是完全多态的.
Object({
a: "string",
b: function() { return a; }
}).b()
Run Code Online (Sandbox Code Playgroud)
抛出a is not defined
.可以a
从里面进入b
吗?