public static List<T> Randomize<T>(List<T> list)
{
List<T> randomizedList = new List<T>();
Random rnd = new Random();
while (list.Count > 0)
{
int index = rnd.Next(0, list.Count); //pick a random item from the master list
randomizedList.Add(list[index]); //place it at the end of the randomized list
list.RemoveAt(index);
}
return randomizedList;
}
Вы можете использовать список из пакета "Список" .
import Control.Monad.ListT (ListT)
import Data.List.Class (execute, fromList, joinM, takeWhile)
import Prelude hiding (takeWhile)
f x = print x >> return x
main =
execute . takeWhile (< 4) .
joinM $ fmap f (fromList [0..5] :: ListT IO Int)
fromList [0..5]
создает монадический список, содержащий 0..5 который не выполняет монадических действий fmap f
для этого списка приводит к ListT IO (IO Int)
, который по-прежнему не выполняет монадических действий, а просто содержит единицы. joinM
поворачивает это в ListT IO Int
. каждое содержащееся действие будет выполнено, когда элемент будет использован, и его результатом будет значение в списке. takeWhile
обобщен для любого List
. И []
, и « Monad m => ListT m
» являются экземплярами List
. execute
использует монадический список, выполняя все его действия. "
Для автоматизированного решения я бы предложил усовершенствовать подход, который я лично использую , чтобы синхронизировать Emacs с текущим рабочим каталогом буфера оболочки. Просто добавьте дополнительный бит информации с именем хоста и используйте его, чтобы установить имя хоста и путь, как показано выше.
Вы можете попробовать Mx ansi-term для размещения вашей оболочки, если у вас неожиданное поведение при сопоставлении клавиш. При этом я не могу воспроизвести описанную вами проблему на вашей установке.
У меня была похожая проблема, и я решил ее, отредактировав свой ~ / .bash_login на машине удаления и добавления
export TERM=xterm
Я использую OS X, и у меня возникли проблемы при подключении к Linux (Debian Lenny)
в другом потоке кто-то упомянул eshell, который я никогда не использовал, но я пробовал его с SSH, и происходит всякая хорошая интеграция. Пришло время изучить eshell.