Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Haskell
Перезагрузить страницу Вложенный if then else в Haskell
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Елена_ Елена_ вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.11.2011
По умолчанию Вложенный if then else в Haskell - 28.11.2011, 18:02

Задан некий список x, мне нужно сравнить первые два элемента этого списка и в случае если один больше другого, применить одно правило, иначе - другое. Эти правила в свою очередь являются также условными операторами if..then..else. Как упростить данную конструкцию? (абзацем отметила начало строк в файле)

test x
| fa (test(a:b:z))=(a<b)
| if fa==True then
{-абзац-----------}if (a==10) then (a+b)
{-абзац-----------}else (a-b)
{-------------}else
{-абзац-----------}if (a>10) then (a*b)
{-абзац-----------}else (a/b)

ошибка загрузки в интерпретаторе
Prelude> :load "c:\\lab.hs"
Reading file "c:\lab.hs":
ERROR c:\lab.hs:8 - Syntax error in declaration (unexpected `}', possibly due to bad layout)

Последний раз редактировалось Елена_; 28.11.2011 в 18:09
Ответить с цитированием
  (#2 (permalink)) Старый
korvin korvin вне форума
Member
 
Аватар для korvin
 
Сообщений: 337
Сказал(а) спасибо: 1
Поблагодарили 15 раз(а) в 15 сообщениях
Регистрация: 25.01.2010
По умолчанию 02.12.2011, 15:36

Вы бы с синтаксисом языка ознакомились, прежде чем писать на нем.
haskell Код:
test (a:b:_)  =  if a < b
    then if a == 10 then a + b else a - b
    else if a >  10 then a * b else a / b
или
haskell Код:
test (a:b:_)
    | a < b && a == 10  =  a + b
    | a < b             =  a - b
    | a > 10            =  a * b
    | otherwise         =  a / b
Ответить с цитированием
Пользователь сказал cпасибо:
Елена_ (06.12.2011)
  (#3 (permalink)) Старый
Елена_ Елена_ вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.11.2011
По умолчанию 06.12.2011, 14:16

спасибо!
а вложенные функции в haskell не используются?
Ответить с цитированием
  (#4 (permalink)) Старый
korvin korvin вне форума
Member
 
Аватар для korvin
 
Сообщений: 337
Сказал(а) спасибо: 1
Поблагодарили 15 раз(а) в 15 сообщениях
Регистрация: 25.01.2010
По умолчанию 07.12.2011, 10:52

используются, например:
haskell Код:
test (a:b:_)  =  if a < b then f (a == 10) else g (a > 10) where
    f True   =  a + b
    f False  =  a - b
    g True   =  a * b
    g False  =  a / b
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на языке Haskell! gomon Haskell 2 21.01.2012 20:00
Использование комбинаторов в Haskell Undina Haskell 0 13.12.2011 12:53
Как сделать вложенный подзапрос Aidar*ka SQL 4 14.04.2011 12:37
Haskell после Пролога? pavelr Prolog 5 24.03.2011 22:29
Вложенный цикл. Пожалуйста помогите!!!! Alex13091991 Pascal 1 14.03.2011 13:34
Средства взаимодействия haskell Zambidis Haskell 4 15.12.2010 01:31
Можно ли превратить вложенный список в линейный Aidar*ka Lisp 5 28.04.2009 15:52
Вложенный шаблонный класс Влад С/С++ 9 11.03.2009 16:46
Как перевести программный код на Haskell winSistem32 Lisp 0 24.05.2008 18:59
Сделать дистрибутив вложенный в программу just_vladimir Вопросы начинающих программистов 3 20.09.2007 23:27
Вложенный хэш. Как добиться до его элиментов Moslem Perl 1 05.07.2005 23:25
Не получается вложенный запрос Bony SQL 4 01.08.2003 18:13



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов