Вторая функция неверна из-за ее типа: Tree a -> Tree b
, тогда как foldTree
ожидает, что она будет a -> b
, где a
взято из Tree a
. b
требуется mapTree
, чтобы быть Tree b
, поэтому третий аргумент для foldTree
должен иметь тип a -> Tree b
.
Итак, самая простая фиксированная версия вашего transFunc
:
mapTree :: forall a b. (a -> b) -> Tree a -> Tree b
mapTree f tree = foldTree Node transFunc tree
where transFunc :: a -> Tree b
transFunc x = Leaf (f x)
Обратите внимание, что вам нужно включить расширение ScopedTypeVariables
для его компиляции.
И эта версия transFunc
является эквивалентом вашего рабочего решения: (Leaf . f)
jQuery имеет два .toggle()
методы:
Переключатели каждый набор подобранных элементов. Если их показывают, переключатель делает их скрытыми. Если они скрыты, переключатель делает их показанными.
Переключатель между двумя вызовами функции любой щелчок.
В этом случае Вы хотите первый. Что-то вроде этого должно добиться цели:
$("a").click(function() {
$("#theForm").toggle();
});
Ahh, это - простые вещи в жизни...
я использовал последнее определение toggle(even,odd);
, но я имел, забыл включать в мое исходное описание проблемы, что моя вторая функция переключателя не только скрывала форму, но уничтожала ее также.
function A
: Ajax загружается, форма в добавленное отделение Скрывают и уничтожают отделение на успешном сообщении формы.
function B
: Уничтожьте отделение
, Вы оба напомнили мне, что toggle();
только соглашения со свойством CSS, и как таковой это не является подходящим к этой задаче. Но тогда я понял, что излишне перезагружал форму на каждом "нечетном" состоянии путем уничтожения его, когда я был сделан, таким образом, я в конечном счете возвратился к этому:
$("link").click(function() { if ($(this).siblings(".form-div").length == 0) { // form is not loaded; load and show the form; hide when done } else { $(this).siblings(".form-div").toggle(); } });
..., который делает то, что я хочу, чтобы он сделал. Спасибо за разъяснение мне [приблизительно 115]!
Вот что я использовал:
$(document).ready(function() {
$('#listing_position').click(function() {
var div_form = $('#listing_position_input');
if (div_form.hasClass('hide')) {
div_form.removeClass('hide');
} else {
div_form.addClass('hide');
}
});
});