M1Mac+Docker+VsCode의 F# 환경 구성

7842 단어 F#tech

이마


나는 F#를 배우기 시작한 다음날이다.
  • 조금 복잡한 계산을 하고 싶어요
  • 함수형 언어로 AtCoder를 풀고 싶은데(그런데 Haskell이 힘들어)
  • 이런 동기에 대해 F#가 매우 강하다고 생각해서 우선 이걸 남겨두죠.

    의 목적


    Docker+VsCode+RemoteContaainer를 통한 F# 환경 구축
    다음 상황을 목표로 하다
  • VsCode에서 IntelliSense, Linter, SyntaxHiilight,Formater의 은혜
  • 를 획득할 수 있다
  • Docker Image 이외의 HostOS 환경을 오염시키지 않음
  • 주의 사항

  • 이 글은 맥북 에어(M1200)를 전제로
  • Docker, VsCode의 설치 완료 전제
  • 이 글의 시간 환경 참조여기.
  • Docker Image


    사용.NET SDK 이미지
    주의fsharp 이미지는 deprecated입니다.

    Docker Image 작업 검증


    다음 명령을 사용하여 Pull & 동작 검증
    $ docker pull mcr.microsoft.com/dotnet/sdk:5.0
    $ docker run --rm  mcr.microsoft.com/dotnet/sdk:5.0 sh -c " echo '\"hello world\"' | dotnet fsi"
    
    Microsoft (R) F# Interactive version 11.4.2.0 for F# 5.0
    Copyright (c) Microsoft Corporation. All Rights Reserved.
    
    For help type #help;;
    
    > val it : string = "hello world"
    

    VsCode 확장 기능


    VsCode는 F# 지원 표준화를 위한 확장 기능Ionide-fsharp
    Atcoder를 해결하는 데 필요한 모든 기능

    .devcontainer


    VsCode DevConteriner 설정
    작업 디렉터리의 루트에 있습니다.devcontainer 디렉터리, devcontainer를 만듭니다.json, docker-compose.yml 설정
    디렉토리 구조
    $ tree -a
    .
    ├── .devcontainer
    │   ├── devcontainer.json
    │   └── docker-compose.yml
    └── main.fsx
    
    docker-compose.yaml
    version: "3"
    services:
      workspace:
        image: "mcr.microsoft.com/dotnet/sdk:5.0"
        working_dir: "/src"
        volumes:
          - ../:/work
        tty: true
    
    devcontainer.json
    {
        "dockerComposeFile": "docker-compose.yml",
        "workspaceFolder": "/work",
        "service": "workspace",
        "extensions": [
            "Ionide.Ionide-fsharp"
        ],
        "settings": {
            "[fsharp]": {
                "editor.defaultFormatter": "Ionide.Ionide-fsharp"
            }
        }
    }
    
    devcontainer.json에서 다음과 같은 설정을 했습니다
  • 시작 용기의 기초로 하는docker-compose 파일의 경로 지정
  • VsCode의 작업 디렉토리 지정
  • DevContainer의 대상이 된 docker-compose 서비스 이름
  • 용기를 시작할 때 용기의 VsCode에 확장 기능 Ionide-fsharp
  • 를 설치한다.
  • 포맷기를 Ionide-fsharp
  • 로 지정

    .devcontainer 작업 검증

  • 작업 디렉토리에서 VsCode 시작
  • $ ls -a
    ./             ../            .devcontainer/ main.fsx
    $ code .
    
  • 향상된 VsCode 명령 팔레트에서 시작하여 "Remote-Contaainers: Open Folder in Contaainer"를 실행합니다.지정한 디렉터리가 현재 디렉터리입니다
  • DevContaainer에서 다음과 같은 오류가 발생하면 x로 제거합니다(제거하지 않으면 Inide-fsharp가 작동하지 않습니다).

  • 적절한 코드 만들기

  • 실행 포맷기, 성형 확인

  • 실행 코드.제가 제시한 방법은 두 가지가 있어요.
  • 확장된 기능
  • "FSI:Send File"또는 "FSI:Send Line"등을 사용하여 명령 트레이에서 해석기를 시작하고 실행
  • 순차적으로 실행할 수 있어 디버깅하기 편리하다
  • 명령줄에서 실행
  • dotnet fsi {filename} 명령 실행
  • 참고 자료
  • devcontainer.json reference
  • 이로써 F# 코드를 쓰는 환경이 구축됐다.

    사이트 축소판 그림


     _____________________
    / 良質なドキュメントを含めて \
    \ 開発環境             /
     --------------------
            \   ^__^
             \  (oo)\_______
                (__)\       )\/\
                    ||----w |
                    ||     ||
    
    
    찾은 편리한 사이트 목록(순서대로 업데이트)

  • F# Core Library Documentation
  • CoreLibrary 설명서"List형 속성에 이런 기능이 있나요?"유사한 물건을 찾는 데 사용

  • Midoliy|F# 프로그래밍
  • 이 사이트를 이용하여 공부하고 있습니다.아주 간단 & 간단하고 알기 쉬워요.
  • 컨디션


    릴리즈
    macOS Big Sur
    11.2.3
    docker desktop
    4.0.1
    VisualStudioCode
    1.60.2
    .NET SDK 이미지
    5.0
    Ionide-fsharp
    v5.7.3
    Remote-Containers
    v0.194.0

    좋은 웹페이지 즐겨찾기