Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.51/69: Рейтинг темы: голосов - 69, средняя оценка - 4.51
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

Let in

15.03.2019, 02:44. Показов 13427. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
сори . знаю что надо читать. ребята, но времени нет.
если несложно то на пальцах
хочу сделать функцию локальной
Haskell
1
2
3
4
5
6
7
8
module Main where
let foo :: Int   in func -- тут при объявлении функции хочу сразу указать область ее видимости 
foo =  1
 
func :: Int -> Int 
func x = x + 3
 
main = print $ func foo
но это не работает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2019, 02:44
Ответы с готовыми решениями:

Как заменить let на let*
Всем привет. Подскажите пожалуйста, как правильно переписать вот это: (let ( (x (let ( (p 'a) ) p ) ) (y 'b) ) (list x y) ) в...

Конструкции локальных определений LET і LAMBDA
Здравствуйте! Помогите написать программу с использованием конструкции локальных определений LET і LAMBDA. Для нахождения арккосинуса.

использование let
(define x 1000) (define y 200) (let ((x 3) (y 4) ) (+ x y) ) получается 7

33
Эксперт 1С
 Аватар для Tklwegsd
845 / 608 / 211
Регистрация: 24.07.2013
Сообщений: 2,102
15.03.2019, 18:05
Студворк — интернет-сервис помощи студентам
Curry, Я бы назвал ее переменной, но, как сказал korvin_, в математическом смысле.
1
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
15.03.2019, 18:11
Цитата Сообщение от Curry Посмотреть сообщение
А что, Москвин, о котором вы в каждой теме упоминаете, говорит что есть?
Сами провоцируете
Чтобы понять, почему в Haskell-е константы это функции нужно посмотреть начало старого курса Дениса Москвина:
Функциональное программирование
Я уже сам не знаю, как их обозвать, чтобы больше никто не прицепился к словам

Добавлено через 3 минуты
Цитата Сообщение от Tklwegsd Посмотреть сообщение
f x = x + 1
Хорошо согласен - переменная. Видимо не поняли друг друга. Я думал, что это обзывают переменной:
Haskell
1
foo = 1
1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
15.03.2019, 18:11
Цитата Сообщение от Tklwegsd Посмотреть сообщение
В данном контексте x - это переменная, функция или что?

Haskell
1
f x = x + 1
Переменная.
1
Эксперт 1С
 Аватар для Tklwegsd
845 / 608 / 211
Регистрация: 24.07.2013
Сообщений: 2,102
15.03.2019, 18:13
Ура! В хаскеле все-таки есть переменные.
2
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
15.03.2019, 18:21
Цитата Сообщение от Tklwegsd Посмотреть сообщение
Ура! В хаскеле все-таки есть переменные.
Всё верно, Денис Москвин подтверждает в своём старом курсе, что в лямбда исчислении они называются переменные
Я когда писал, думал о foo = 1.

Добавлено через 2 минуты
Хотя я и её могу обозвать переменной для удобства, если точно знаю, что человек знает, что это не переменная.
1
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
15.03.2019, 18:30
Цитата Сообщение от Curry Посмотреть сообщение
В Haskell переменных нет. Всё это функции.
Цитата Сообщение от XRuZzz Посмотреть сообщение
Очень хочется зацепиться за это слово, и сказать, что в Haskell-e нет переменных, по крайней мере, нельзя такое слово употреблять,
То есть то что я читаю "Переменные в хаскель являются неизменными" по сути
лукавство для новичков, чтобы снизить порог вхождения? Прочла в гугле несколько
споров на эту тему. Да, я думаю это должно резать слух.
А как на счет значения с именем foo,
или определим параметр с именем foo,
или данные с именем foo? Нет и понятия присваивания.
Неужели правильно называть это функцией? По моему будет
страдать ясность изложения мысли
Не видела пока писала появившиеся коменты)
1
15.03.2019, 18:38

Не по теме:

Цитата Сообщение от nezabudka Посмотреть сообщение
Неужели правильно называть это функцией?
Посмотрите лямбда-исчисления Дениса Москвина, тогда сможете со спокойной совестью называть foo переменной :)

0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
15.03.2019, 19:04
XRuZzz, Думаю надо пересмотреть и заострить на этом внимание.
Я довольствовалась приведенным выше утверждением "Переменные в хаскель являются неизменными"
и было счастье. Примерно представляю где собака зарыта. На начальном знакомстве может такая
вольность и допустима но общение может превратится в общение с инопланетянином если
влаживать в это слово неверный смысл, а неверный (пришедший из дргугих языков)
смысл так и ходит рядом и ждет своего часа запутать начинающего адепта.
Значит есть необходимость избегать двусмысленности. Что и запишем.
1
Модератор
 Аватар для Curry
5171 / 3536 / 536
Регистрация: 01.06.2013
Сообщений: 7,689
Записей в блоге: 9
15.03.2019, 19:35
Цитата Сообщение от XRuZzz Посмотреть сообщение
в лямбда исчислении они называются переменные
При чём тут что как называется в лямбда исчислении?
В Haskell есть переменные типов - type variables. А то что слева от знака = определения функций, они не переменные.
1
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
15.03.2019, 22:48
Вот ещё взрывомозгная конструкция из книги Холомьёва:
Haskell
1
2
fix f = let x = f x
        in  x
Из той же 5й главы ФВП.
1
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
16.03.2019, 20:47
Haskell
1
foo = 42
или
Haskell
1
let foo = 42
"Определяется функция не принимающая ни одного аргумента и возвращающая значение 42"

Добавлено через 59 минут
Haskell
1
let foo = 42 :: Int
1
Модератор
 Аватар для Curry
5171 / 3536 / 536
Регистрация: 01.06.2013
Сообщений: 7,689
Записей в блоге: 9
16.03.2019, 21:24
Цитата Сообщение от XRuZzz Посмотреть сообщение
Вот ещё взрывомозгная конструкция из книги Холомьёва:
Это стандартная функция из базового пакета. Вот, например, решение задачки из соседней темы
Haskell
1
2
3
4
5
6
7
8
import Data.Function
 
sumArithmetic :: Integer -> -- ^ a - первый член последовательности
                 Integer -> -- ^ d - разность
                 Integer -> -- ^ n - количество первых членов последовательности 
                 Integer
sumArithmetic a d = fix (\f r x i -> if i <= 0 then r 
                                     else f (r+x) (x+d) (i-1)) 0 a
2
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
20.03.2019, 16:10
Вот еще из уважаемых источников (просто информация к размышлению). раньше не обратила бы на это внимание ))
"When a function doesn't take any parameters, we usually say it's a definition (or a name)."
"В Haskell функции без параметров называются определениями (definition) или именами (name)."
"В Haskell нет функций без параметров. В сигнатуре функции (после всех возможных подстановок) всегда присутствует хотя бы одна стрелка; если это не так — то это не функция, это конкретное значение."
1
Модератор
 Аватар для Curry
5171 / 3536 / 536
Регистрация: 01.06.2013
Сообщений: 7,689
Записей в блоге: 9
20.03.2019, 17:28
......
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2019, 17:28

Конструкция let
Здравствуйте, я написал два варианта вычисления квадратного корня методом Ньютона. Следующая ниже версия рабочая: (define...

Записать λ-вызов в эквивалентной форме LET
Задание 1. https://www.cyberforum.ru/lisp/thread963913.html (lambda (x) (let ((b -3)) (if (And (&gt;= x 1) (&lt;= x 3)) (expt...

Лямбда-вызовы с использованием формы LET
Добрый день. Помогите решить задачу пожалуйста. Запишите следующие лямбда-вызовы с использованием формы LET и вычислите их на машине: ...

Написать программу использую конструкции локальных определений LET и LAMBDA
Добрый день! Помогите решить: Написать программу использующие конструкции локальных определений LET и LAMBDA для объединения двух списков.

LET IN выражения
Здравствуйте! Хочу понять кое-что про let &lt;val&gt; = &lt;expr&gt; in &lt;expr&gt; выражения в Haskell. В OCaml я могу описать глобальное имя: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru